Цветовая палитра элементов управления

   
На этом шаге рассмотрим цветовую палитру элементов управления.

   
Цветовая палитра элементов управления — это таблица, в которой содержатся цвета, используемые виджетом при отображении на экране. Дело в том, что цвета виджетов не определены окончательно и в любой момент могут быть изменены передачей соответствующего цвета текста, цвета фона и т. д.

   
Каждый из виджетов содержит в себе объект палитры, доступ к которому можно получить с помощью метода palette() класса QWidget. Сама палитра — это класс QPalette, который состоит из трех основных групп объектов, показанных на рис. 1.


Рис.1. Схема цветовой палитры виджета

   
Эти группы определяют три возможных состояния виджета: активное (Active), неактивное (Inactive) и недоступное (Disabled). Каждая из этих групп состоит из различных цветовых ролей (color roles), описание которых приведено в табл. 1. Каждая роль имеет кисть (QBrush) и цвет (QColor).

   
Класс QPalette использует механизм неявных общих данных, а это означает, что все виджеты используют ссылку на один и тот же объект палитры. Если палитра виджета подвергается изменению, виджет получает свой собственный объект данных палитры.

Таблица 1. Цветовые перечисления ColorRole класса QPalette

ФлагОписание
WindowTextЦвет, который используется по умолчанию для рисования пером. Этот цвет находится на переднем плане. По умолчанию это черный цвет
TextЦвет текста. По умолчанию — черный
BrightTextЯркий цвет текста, отличающийся от цвета WindowText. Обычно совпадает с Text. По умолчанию — черный
ButtonTextЦвет текста для надписей на кнопках. По умолчанию — черный
HighlightЦвет фона выделения элементов. По умолчанию — темно-голубой
HighlightedTextЦвет текста выделенных элементов. Представляет собой контраст к цвету, заданному значением Hightlight. По умолчанию — белый
WindowОсновной цвет фона. По умолчанию — светло-серый цвет
BaseЦвет для заднего фона виджета. По умолчанию — белый или другой цвет светлого оттенка
ButtonЦвет кнопки, как правило, одного цвета с фоном. По умолчанию — светло-серый
LinkЦвет, используемый для непосещенной гипертекстовой ссылки. По умолчанию — голубой
LinkVisitedЦвет, используемый для обозначения посещенной гипертекстовой ссылки. По умолчанию — розовый
LightЦвет эффекта объемности. Должен быть светлее цвета заданного значением Button. По умолчанию — белый
MidlightЦвет эффекта объемности. По умолчанию — светло-серый
DarkЦвет эффекта объемности. Должен быть темнее цвета заданного значением Button. По умолчанию — темно-серый
MidЦвет эффекта объемности. По умолчанию — средне-серый
ShadowЦвет эффекта объемности. По умолчанию — черный

   
На рис. 2 показано, каким областям виджета счетчика соответствуют некоторые из значений, приведенных в табл. 1.


Рис.2. Некоторые элементы палитры виджета счетчика

   
Пример изменения палитры приведен в листинге программы, результат работы которй показан на рис. 3.

//создается объект палитры pal
//объекту палитры присваивается значение палитры виджета счетчика,
//которое извлекается вызовом метода palette()
QPalette pal = spb.palette();
//объект палитры подвергается изменениям с помощью метода setBrush()
//и серии вызовов метода setColor()
pal.setBrush(QPalette::Button, QBrush(Qt::red, Qt::Dense3Pattern));
pal.setColor(QPalette::ButtonText, Qt::blue);
pal.setColor(QPalette::Text, Qt::magenta);
//значение роли цвета QPalette::Base предназначено только для активного состояния
pal.setColor(QPalette::Active, QPalette::Base, Qt::green);
//полученная палитра устанавливается в виджет методом setPalette()
spb.setPalette(pal);
spb.resize(50, 50);
spb.show();
//применяем стиль Windows для того, чтобы наш виджет не использовал
//стиль платформы и выглядел везде одинаково
app.setStyle(QStyleFactory::create("windows"));


Рис.3. Приложение, демонстрирующее измененную палитру виджета

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий