Russian Qt Forum
Ноябрь 24, 2024, 14:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidget "подсветка" строк  (Прочитано 6770 раз)
AlphaGh0St
Гость
« : Декабрь 29, 2014, 02:26 »

Всем привет!
Подскажите, если ли возможность в QTableWidget "подсвечивать" строки?
Например, добавился новый элемент в таблицу, и чтобы вся строка добавленного элемента моргнула зелёным.
А если элемент удалился, то перед удалением, его строка в таблице моргнула красным.

Благодарю.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 29, 2014, 07:03 »

Всем привет!
Подскажите, если ли возможность в QTableWidget "подсвечивать" строки?
Например, добавился новый элемент в таблицу, и чтобы вся строка добавленного элемента моргнула зелёным.
А если элемент удалился, то перед удалением, его строка в таблице моргнула красным.

Благодарю.

Нет. Придется самому это реализовывать.
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Декабрь 29, 2014, 09:09 »

Пиши свой делегат.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #3 : Декабрь 29, 2014, 09:38 »

Пиши свой делегат.
Делегату как-то еще надо сообщить о перерисовке строки.
Мое мнение, что проще "помигать" моделью, используя роль: Qt::BackgroundRole
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Декабрь 29, 2014, 09:47 »

Изменение в модели роли не даст результата, если вьюха не перерисуется, так что полюбому придется вьюху дергать на перерисовку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #5 : Декабрь 29, 2014, 09:50 »

Изменение в модели роли не даст результата, если вьюха не перерисуется, так что полюбому придется вьюху дергать на перерисовку.
Почему? Если модель посылает все необходимые события, то вьюха будет перерисовывать, причём именно то, что захочит модель.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Декабрь 29, 2014, 09:59 »

Изменение в модели роли не даст результата, если вьюха не перерисуется, так что полюбому придется вьюху дергать на перерисовку.
Почему? Если модель посылает все необходимые события, то вьюха будет перерисовывать, причём именно то, что захочит модель.
А, да, забыл про события. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
AlphaGh0St
Гость
« Ответ #7 : Декабрь 29, 2014, 13:12 »

Но ведь QTableWidget - Item-Based, получится ли к нему сделать делегат?
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #8 : Декабрь 29, 2014, 13:25 »

Никогда не использовал QTableWidget (всегда только View + Model), но он наследует QTableView, а значит можно установить и делегат и получить модель.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Декабрь 29, 2014, 14:57 »

Код
C++ (Qt)
QTableWidget *item; // нужный айтем
item->setBackground(QBrush(Qt::green));
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
AlphaGh0St
Гость
« Ответ #10 : Декабрь 29, 2014, 22:16 »

Код
C++ (Qt)
QTableWidget *item; // нужный айтем
item->setBackground(QBrush(Qt::green));

То, что нужно. Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 23.