Russian Qt Forum
Августа 27, 2025, 15:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Цвет выделенных ячеек в отсутствии фокуса  (Прочитано 3334 раз)
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?
Записан
spirit
Гость
« Ответ #1 : Января 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);
...
 
Записан
alex12
Гость
« Ответ #2 : Января 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.

Теперь возник вопрос, какой вариант правильнее использовать? Я думаю вариант с палитрой предпочтительнее.
Записан
spirit
Гость
« Ответ #3 : Января 28, 2009, 10:59 »

если делегат разрабатывался чисто для этой цели, то проще палитру юзать конечно, если же делегат нужен еще для чего-то, то можно оставить и в делегате.
Записан
ритт
Гость
« Ответ #4 : Января 28, 2009, 11:03 »

вариант с палитрой проще.
кошернее будет через делегат.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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