Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Jo от Ноябрь 23, 2009, 19:37



Название: Подсветка строк в QTableView
Отправлено: Jo от Ноябрь 23, 2009, 19:37
Не подскажете в какую сторону копать. Направьте пожалуйста.

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

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

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




Название: Re: Подсветка строк в QTableView
Отправлено: lit-uriy от Ноябрь 23, 2009, 19:47
вот у Шлее вариант есть, может подойдёт:


Название: Re: Подсветка строк в QTableView
Отправлено: Jo от Ноябрь 23, 2009, 21:05
Мне кажется что такой подход уместен, когда мне нужно менять цвет какой то одной ячейки, а как сделать это для всей строки.

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

Может существует другой путь?


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


Название: Re: Подсветка строк в QTableView
Отправлено: MoPDoBoPoT от Ноябрь 26, 2009, 16:06
fedser87, именно - для каждой ячейки строки. И еще чистить эту роль у строки, которая "потеряла мышонка"  :) А еще, если в модели используется эта роль для информативности, то как-то запоминать старое значение, а потом восстанавливать. Так что не выход.  :-\


Название: Re: Подсветка строк в QTableView
Отправлено: lit-uriy от Декабрь 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);
}
 
(от сель (http://labs.trolltech.com/blogs/2007/11/01/qstyleditemdelegate-styling-item-views/)), я думаю QTreeView, можно смело поменять на QTableView


Название: Re: Подсветка строк в QTableView
Отправлено: AntonUfo от Январь 26, 2010, 15:31
а поподробней кто может объяснить как этим воспользоватся...


Название: Re: Подсветка строк в QTableView
Отправлено: crossly от Январь 28, 2010, 18:19
setStyleSheet