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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подсветка строк в QTableView  (Прочитано 9098 раз)
Jo
Гость
« : Ноябрь 23, 2009, 19:37 »

Не подскажете в какую сторону копать. Направьте пожалуйста.

Необходимо при наведении мышкой на ячейку в QTableView, красить всю сроку определенным цветом.

Как понимаю закраску ячеек можно делать либо через модель или с помощью делегата, но как отследить что является под курсором мыши в таких случаях не совсем ясно да и как закрасить всю сроку.

Вообще реально ли это сделать, может кто то сталкивался с такой проблемой?


Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноябрь 23, 2009, 19:47 »

вот у Шлее вариант есть, может подойдёт:
Записан

Юра.
Jo
Гость
« Ответ #2 : Ноябрь 23, 2009, 21:05 »

Мне кажется что такой подход уместен, когда мне нужно менять цвет какой то одной ячейки, а как сделать это для всей строки.

Такое ощущение что это надо делать не средствами делегатов.

Может существует другой путь?
Записан
registrationfedser87
Гость
« Ответ #3 : Ноябрь 26, 2009, 14:22 »

У QAbstractItemView (а QTableView наследуется от него) есть сигнал
Код
C++ (Qt)
void entered ( const QModelIndex & index )
только как написано в документации необходимо включить Mouse tracking, чтобы он работал. Так вот-теперь ты сможешь узнать индекс строки над которой находится указатель мыши. Ну а зная индекс,ты можешь закрасить строку выставляя у модели  нужный цвет методом
Код
C++ (Qt)
setData(index,твой_цвет, Qt::BackgroundRole)
. Только возможно придётся вызывать этот метод для каждой ячейки(я в глубь не вдавался)
Записан
MoPDoBoPoT
Гость
« Ответ #4 : Ноябрь 26, 2009, 16:06 »

fedser87, именно - для каждой ячейки строки. И еще чистить эту роль у строки, которая "потеряла мышонка"  Улыбающийся А еще, если в модели используется эта роль для информативности, то как-то запоминать старое значение, а потом восстанавливать. Так что не выход.  В замешательстве
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Декабрь 02, 2009, 21:22 »

Jo, кажется я нашёл то, что тебе надо:
Код
CSS
QTreeView::item {
   border: 1px solid #d9d9d9;
   border-top-color: transparent;
   border-bottom-color: transparent;
}
 
QTreeView::item:hover {
   background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);
   border: 1px solid #bfcde4;
}
 
QTreeView::item:selected {
   border: 1px solid #567dbc;
}
 
QTreeView::item:selected:active{
   background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
}
 
QTreeView::item:selected:!active {
   background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);
}
 
(от сель), я думаю QTreeView, можно смело поменять на QTableView
« Последнее редактирование: Декабрь 02, 2009, 22:01 от lit-uriy » Записан

Юра.
AntonUfo
Гость
« Ответ #6 : Январь 26, 2010, 15:31 »

а поподробней кто может объяснить как этим воспользоватся...
Записан
crossly
Гость
« Ответ #7 : Январь 28, 2010, 18:19 »

setStyleSheet
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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