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

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

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

   
Каждый из виджетов содержит в себе объект палитры, доступ к которому можно получить с помощью метода 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. Приложение, демонстрирующее измененную палитру виджета

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



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

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