Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Igore от Апрель 19, 2012, 11:42



Название: Цвета в разных View и одним SelectionModel
Отправлено: Igore от Апрель 19, 2012, 11:42
Мне нужно чтобы background и foreground в двух разных View и одним selectionModel совпадал, это нужно для того чтобы frozen column смотрелась как единое целое. Можно это как то реализовать?

Прикрепляю пример на основе FrozenColumn и SimpleTreeModel, и картинку где цвета различны.


Название: Re: Цвета в разных View и одним SelectionModel
Отправлено: _OLEGator_ от Апрель 19, 2012, 11:47
Если я все правильно понял, то можно определить QPalette::Inactive в QPalette
Код
C++ (Qt)
void QPalette::setColor ( ColorGroup group, ColorRole role, const QColor & color )


Название: Re: Цвета в разных View и одним SelectionModel
Отправлено: Igore от Апрель 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);
 


Название: Re: Цвета в разных View и одним SelectionModel
Отправлено: _OLEGator_ от Апрель 19, 2012, 12:20
За цвет выделения отвечает QPalette::Highlight и QPalette::HighlightedText.
Только это не будет работать начиная с Windows Vista, там по-другому происходит отрисовка выделения со стилем Aero, на него не повлияет QPalette...


Название: Re: Цвета в разных View и одним SelectionModel
Отправлено: Igore от Апрель 19, 2012, 12:30
Спасибо, теперь все работает как надо, под XP  :).
На Win7 старое поведение, буду думать как исправлять.


Название: Re: [РЕШЕНО] Цвета в разных View и одним SelectionModel
Отправлено: Igore от Апрель 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);
 


Название: Re: Цвета в разных View и одним SelectionModel
Отправлено: _OLEGator_ от Апрель 19, 2012, 15:16
И не будет работать. Нужно перебивать стиль выделения Aero, только не помню, каким способом это лучше делать...