Russian Qt Forum
Июня 12, 2025, 05:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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

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

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

Сообщений: 1805



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

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

Благодарю.

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

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

Сообщений: 5877


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


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

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

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

Сообщений: 339


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

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

Сообщений: 5877


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


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

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

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

Сообщений: 4350



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

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

Сообщений: 5877


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


Просмотр профиля 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
Крякер
****
Online Online

Сообщений: 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]   Вверх
  Печать  
 
Перейти в:  


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