Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alex12 от Января 28, 2009, 09:48



Название: Цвет выделенных ячеек в отсутствии фокуса
Отправлено: alex12 от Января 28, 2009, 09:48
Хочу чтобы QTableWidget отображал выделенные ячейки при отсутствии фокуса также, как и при наличии. По умолчанию при наличии фокуса ячейки выделяются синим, а без фокуса серым. Надо чтобы всегда было по одинаковому.

Делаю так:
Код:
class ItemDelegate : public QItemDelegate
{
public:
  void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
  {
    QStyleOptionViewItem so = option;
    so.state |= QStyle::State_HasFocus;
    QItemDelegate::paint( painter, so, index );
  }
}

Не работает. Может это надо делать не делегатом, а как-то переопределением QStyle?


Название: Re: Цвет выделенных ячеек в отсутствии фокуса
Отправлено: spirit от Января 28, 2009, 10:09
палитру можно переустановить вот таким способом
Код
C++ (Qt)
...
QPalette pal = tableWidget->palette();
pal.setColor(QPalette::Inactive, QPalette::Highlight, pal.color(QPalette::Active, QPalette::Highlight));
tableWidget->setPalette(pal);
...
 


Название: Re: Цвет выделенных ячеек в отсутствии фокуса
Отправлено: alex12 от Января 28, 2009, 10:55
палитру можно переустановить вот таким способом
Код
C++ (Qt)
...
QPalette pal = tableWidget->palette();
pal.setColor(QPalette::Inactive, QPalette::Highlight, pal.color(QPalette::Active, QPalette::Highlight));
tableWidget->setPalette(pal);
...
 

Спасибо, буду знать. Работает.

Мой вариант тоже заработал. Надо было только поставить so.state |= QStyle::State_Active.

Теперь возник вопрос, какой вариант правильнее использовать? Я думаю вариант с палитрой предпочтительнее.


Название: Re: Цвет выделенных ячеек в отсутствии фокуса
Отправлено: spirit от Января 28, 2009, 10:59
если делегат разрабатывался чисто для этой цели, то проще палитру юзать конечно, если же делегат нужен еще для чего-то, то можно оставить и в делегате.


Название: Re: Цвет выделенных ячеек в отсутствии фокуса
Отправлено: ритт от Января 28, 2009, 11:03
вариант с палитрой проще.
кошернее будет через делегат.