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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Цвета в разных View и одним SelectionModel  (Прочитано 3998 раз)
Igore
Гость
« : Апрель 19, 2012, 11:42 »

Мне нужно чтобы background и foreground в двух разных View и одним selectionModel совпадал, это нужно для того чтобы frozen column смотрелась как единое целое. Можно это как то реализовать?

Прикрепляю пример на основе FrozenColumn и SimpleTreeModel, и картинку где цвета различны.
« Последнее редактирование: Апрель 19, 2012, 14:13 от Igore » Записан
_OLEGator_
Гость
« Ответ #1 : Апрель 19, 2012, 11:47 »

Если я все правильно понял, то можно определить QPalette::Inactive в QPalette
Код
C++ (Qt)
void QPalette::setColor ( ColorGroup group, ColorRole role, const QColor & color )
Записан
Igore
Гость
« Ответ #2 : Апрель 19, 2012, 12:13 »

К сожалению не помогло
Код
C++ (Qt)
QPalette pallete = palette();
pallete.setColor(QPalette::Inactive, QPalette::Background, pallete.color(QPalette::Active, QPalette::Background));
pallete.setColor(QPalette::Inactive, QPalette::Foreground, pallete.color(QPalette::Active, QPalette::Foreground));
frozen_tree_view_->setPalette(pallete);
 
« Последнее редактирование: Апрель 19, 2012, 12:15 от Igore » Записан
_OLEGator_
Гость
« Ответ #3 : Апрель 19, 2012, 12:20 »

За цвет выделения отвечает QPalette::Highlight и QPalette::HighlightedText.
Только это не будет работать начиная с Windows Vista, там по-другому происходит отрисовка выделения со стилем Aero, на него не повлияет QPalette...
« Последнее редактирование: Апрель 19, 2012, 12:22 от _OLEGator_ » Записан
Igore
Гость
« Ответ #4 : Апрель 19, 2012, 12:30 »

Спасибо, теперь все работает как надо, под XP  Улыбающийся.
На Win7 старое поведение, буду думать как исправлять.
« Последнее редактирование: Апрель 19, 2012, 12:35 от Igore » Записан
Igore
Гость
« Ответ #5 : Апрель 19, 2012, 14:10 »

Через styleSheet тоже не работает на Win7
Код
C++ (Qt)
QString styleSheet = QString("QTreeView {"
                           "selection-color:%1;"
                           "selection-background-color:%2;}")
                           .arg(palette().color(QPalette::Active, QPalette::HighlightedText).name())
                           .arg(palette().color(QPalette::Active, QPalette::Highlight).name());
frozen_tree_view_->setStyleSheet(styleSheet);
 
« Последнее редактирование: Апрель 19, 2012, 14:13 от Igore » Записан
_OLEGator_
Гость
« Ответ #6 : Апрель 19, 2012, 15:16 »

И не будет работать. Нужно перебивать стиль выделения Aero, только не помню, каким способом это лучше делать...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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