Название: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: andrew_121 от Март 14, 2008, 18:48 День добрый.
Вопрос такой: есть QToolButton, как изменить его цвет ? Код: QToolButton* button; Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: pastor от Март 14, 2008, 19:27 см. setPalette
Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 21, 2008, 22:53 У меня есть QToolBar, на нём QToolButton-ы. Хочу поменять цвет фона у них. Делаю это через setPalette. Всё прекрасно меняется. Но вот когда наводишь на QToolButton мышкой, он рисуется приподнятым и при этом цвет фона становится стандартным серым. Как не танцевал с бубном вокруг setPalette, победить это не смог. Может кто подскажет?
Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: pastor от Апрель 21, 2008, 23:50 Покажите код как вы устанавливаете цвет
Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 22, 2008, 08:01 Ну, последнее моё извращение выглядит примерно так:
Код: const QColor c(255, 0, 0); В итоге ВСЁ красное... кроме фона при наведении мыши, он по-прежнему серый. Игрался с setAutoFillBackground, тоже не помогло. Да, версия Qt 4.3.3, WinXP. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Sergeich от Апрель 22, 2008, 10:49 Попробуй через setStyleSheet:
Цитировать For this kind of customization, style sheets are much more powerful than QPalette. For example, it might be tempting to set the QPalette::Button role to red for a QPushButton to obtain a red push button. However, this wasn't guaranteed to work for all styles, because style authors are restricted by the different platforms' guidelines and (on Windows XP and Mac OS X) by the native theme engine. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 22, 2008, 13:21 Эх, пытаюсь...
Код: toolbar->setStyleSheet("QToolBar {background: red; }"); Код: toolbutton->setStyleSheet("QToolButton { background-color: red; }"); Код: toolbutton->setStyleSheet("QToolButton { background-color: red; border: 1px solid red; }"); Есть такой псевдостиль: hover. Вроде как раз это нужно. Пробую: Код: toolbutton->setStyleSheet("QToolButton:hover { background-color: red; }"); Как-то обидно, можно день потратить на эксперименты, а вещь-то элементарная и ясно ведь, что все эти изменения бэкграунда тулбара не имеют никакого смысла, если тулбаттоны на нём ведут себя подобным образом. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Mikhail от Апрель 22, 2008, 22:24 Ну, последнее моё извращение выглядит примерно так: Код: const QColor c(255, 0, 0); В итоге ВСЁ красное... кроме фона при наведении мыши, он по-прежнему серый. Игрался с setAutoFillBackground, тоже не помогло. Да, версия Qt 4.3.3, WinXP. Я бы посоветовал посмотреть в сторону QPalette::ColorRole. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 22, 2008, 22:33 Хм, не очень понял. Ведь всякие константы QPalette::Window, QPalette::Background и т.д. - это и есть элементы перечисления QPalette::ColorRole. В примере выше я их все ставил в красный цвет. Но на цвет при наведении мыши это не влияло.
Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Alex03 от Апрель 23, 2008, 09:18 После setPalette у меня работает ещё белее по другому...
А самое смешное что туллбар прилепленный к окну отрисовывается по другому чем плавающий. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Alex03 от Апрель 23, 2008, 09:39 Добавил одну строчку в C:\qt\4.3.3\examples\mainwindows\application\mainwindow.cpp
Код: void MainWindow::createToolBars() А вот когда тулбар прилеплен, то поведение наоборот чем у vfilatov, т.е. фон изначально серый, а при наведении мыши красный. WinXP, Qt 4.3.3. в свойствах экрана винды установлен "Классический стиль" а не "Стиль WinXP". Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 23, 2008, 10:25 Очень интересно! Вы правы, стоит только добавить в своё приложение строку
Код: QApplication::setStyle("windows"); Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Alex03 от Апрель 23, 2008, 11:26 А вообще троли несколько перемудрили скрещивая палитру, стили Qt и стили системы и системных примитивов.
точнее не мудрить тут невозможно. Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: Mikhail от Апрель 23, 2008, 14:02 Я бы посоветовал посмотреть в сторону QPalette::ColorRole. Имеется в виду QPalette::ColorGroup и QPalette::ColorRole Пример QPalette pal; pal.setBrush ( QPalette::Inactive, QPalette::Highlight, QBrush(Qt::darkBlue) ); pal.setBrush ( QPalette::Active, QPalette::Highlight, QBrush(Qt::red) ); pal.setBrush ( QPalette::Inactive, QPalette::HighlightedText, QBrush(Qt::white) ); Название: Re: Как изменить цвет QToolButton ? Как изменить цвет QToolButton Отправлено: vfilatov от Апрель 23, 2008, 14:16 Дело в том, что QPalette::setColor (ColorRole role, const QColor & color) (без указания ColorGroup) устанавливает указанную кисть (конструируемую из color) для всех групп, так что в примере выше я устанавливал цвет для всех ролей всех групп.
|