Класс QPalette
Класс QPalette содержит группы цветов для каждого состояния виджета. Подробнее...
| Заголовок: | #include <QPalette> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Открытые типы
| перечисление | ColorGroup { Disabled, Active, Inactive, Normal } |
| перечисление | ColorRole { Window, WindowText, Base, AlternateBase, ToolTipBase, …, NoRole } |
Открытые функции
| QPalette(QPalette &&other) | |
| QPalette(const QPalette &p) | |
| QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window) | |
| QPalette(const QColor &button, const QColor &window) | |
| QPalette(Qt::GlobalColor button) | |
| QPalette(const QColor &button) | |
| QPalette() | |
| QPalette & | operator=(QPalette &&other) |
| QPalette & | operator=(const QPalette &p) |
| ~QPalette() | |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &s, const QPalette &p) |
| QDataStream & | operator>>(QDataStream &s, QPalette &p) |
Подробное описание
Палитра состоит из трёх групп цветов: Активный, Выключенный и Неактивный. Все виджеты в Qt содержат палитру и используют её для отрисовки. Это позволяет легко настраивать пользовательский интерфейс и поддерживать его единообразие.
Если вы создаёте новый виджет, настоятельно рекомендуем использовать цвета из палитры вместо жёсткого кодирования определённых цветов.
Группы цветов:
- Группа Активный используется для окна, у которого есть фокус клавиатуры.
- Группа Неактивный используется для других окон.
- Группа Выключенный используется для виджетов (не окон), которые по каким-либо причинам отключены.
И активные, и неактивные окна могут содержать выключенные виджеты. (Выключенные виджеты часто называют недоступными или серыми.)
В большинстве стилей Активный и Неактивный выглядят одинаково.
Цвета и кисти могут быть установлены для конкретных ролей в любой группе цветов палитры с помощью setColor() и setBrush(). Группа цветов содержит группу цветов, используемых виджетами для отрисовки. Рекомендуется, чтобы виджеты использовали роли цветов из палитры, такие как "foreground" и "base", а не буквальные цвета, такие как "красный" или "бирюзовый". Роли цветов перечислены и определены в документации ColorRole.
Настоятельно рекомендуем использовать стандартную палитру текущего стиля (возвращаемую QGuiApplication::palette()) и изменять её по необходимости. Виджеты Qt используют её при отрисовке.
Для изменения группы цветов вызываются функции setColor() и setBrush(), в зависимости от того, хотите ли вы чистый цвет или шаблон растрового изображения.
Также существуют соответствующие функции-получатели color() и brush(), а также часто используемая вспомогательная функция для получения ColorRole для текущей ColorGroup: window(), windowText(), base() и т.д.
Вы можете скопировать палитру с помощью конструктора копирования и проверить, являются ли две палитры идентичными, используя isCopyOf().
QPalette оптимизирована благодаря использованию неявного совместного использования, поэтому передача объектов QPalette в качестве аргументов очень эффективна.
Предупреждение: Некоторые стили не используют палитру для всех операций отрисовки, например, если они используют механизмы нативного оформления. Это относится как к стилям Windows Vista, так и к стилям macOS.
См. также QApplication::setPalette(), QWidget::setPalette() и QColor.
Документация по типам членов
Перечисление QPalette::ColorGroup
| Константа | Значение | Описание |
|---|---|---|
QPalette::Disabled |
1 |
|
QPalette::Active |
0 |
|
QPalette::Inactive |
2 |
|
QPalette::Normal |
Active |
синоним для Активный |
Перечисление QPalette::ColorRole
Перечисление ColorRole определяет различные символические роли цветов, используемые в современных графических интерфейсах.
Основные роли:
| Константа | Значение | Описание |
|---|---|---|
QPalette::Window |
10 |
Основной цвет фона. |
QPalette::WindowText |
0 |
Основной цвет переднего плана. |
QPalette::Base |
9 |
В основном используется как цвет фона для виджетов ввода текста, но также может использоваться для других целей отрисовки, таких как фон раскрывающегося списка выпадающего списка и ручек панели инструментов. Обычно белый или другой светлый цвет. |
QPalette::AlternateBase |
16 |
Используется как альтернативный цвет фона в представлениях с чередующимися цветами строк (см. QAbstractItemView::setAlternatingRowColors()). |
Выделенные (отмеченные) элементы имеют две роли:
| Константа | Значение | Описание |
|---|---|---|
QPalette::Highlight |
12 |
Цвет для обозначения выделенного или текущего элемента. По умолчанию цвет выделения - Qt::darkBlue. |
QPalette::HighlightedText |
13 |
Цвет текста, контрастирующий с Highlight. По умолчанию цвет выделенного текста - Qt::white. |
Есть две роли цвета, связанные с гиперссылками:
| Константа | Значение | Описание |
|---|---|---|
QPalette::Link |
14 |
Цвет текста, используемый для не посещённых гиперссылок. По умолчанию цвет ссылки - Qt::blue. |
QPalette::LinkVisited |
15 |
Цвет текста, используемый для уже посещённых гиперссылок. По умолчанию цвет посещённой ссылки - Qt::magenta. |
Обратите внимание, что мы не используем роли Link и LinkVisited при рендеринге форматированного текста в Qt, и рекомендуем использовать CSS и функцию QTextDocument::setDefaultStyleSheet() для изменения внешнего вида ссылок. Например:
QTextBrowser browser;
QColor linkColor(Qt::red);
QString sheet = QString::fromLatin1("a { text-decoration: underline; color: %1 }").arg(linkColor.name());
browser.document()->setDefaultStyleSheet(sheet); | Постоянная | Значение | Описание |
|---|---|---|
QPalette::NoRole |
17 |
Нет роли; эта специальная роль часто используется для указания того, что роль не была назначена. |
Документация по функциям-членам
[since 5.4] QPalette::QPalette(QPalette &&other)
Перемещающее создание экземпляра QPalette, позволяющее ему указывать на тот же объект, на который указывал other.
После перемещения вы можете только назначать или уничтожать other. Любые другие операции приведут к неопределённому поведению.
Эта функция была представлена в Qt 5.4.
QPalette::QPalette(const QPalette &p)
Создаёт копию p.
Этот конструктор быстрый благодаря неявной совместной памяти.
QPalette::QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window)
Создаёт палитру. Вы можете передать кисти, растровые изображения или обычные цвета для windowText, button, light, dark, mid, text, bright_text, base и window.
См. также QBrush.
QPalette::QPalette(const QColor &button, const QColor &window)
Создаёт палитру из цвета button и цвета window. Другие цвета автоматически вычисляются на основе этих цветов.
QPalette::QPalette(Qt::GlobalColor button)
Создаёт палитру из цвета button. Другие цвета автоматически вычисляются на основе этого цвета. Window также будет цветом кнопки.
QPalette::QPalette(const QColor &button)
Создаёт палитру из цвета button. Другие цвета автоматически вычисляются на основе этого цвета. Window также будет цветом кнопки.
QPalette::QPalette()
Создаёт пустой объект палитры без установленных цветовых ролей.
При использовании в качестве палитры QWidget цвета решаются так, как описано в QWidget::setPalette().
См. также QApplication::setPalette() и QApplication::palette().
[since 5.2] QPalette &QPalette::operator=(QPalette &&other)
Перемещающее присваивание other экземпляру QPalette.
Эта функция была представлена в Qt 5.2.
QPalette &QPalette::operator=(const QPalette &p)
Присваивает p этой палитре и возвращает ссылку на эту палитру.
Эта операция быстрая благодаря неявной совместной памяти.
QPalette::~QPalette()
Уничтожает палитру.
const QBrush &QPalette::alternateBase() const
Возвращает запасную кисть базового цвета текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::base() const
Возвращает кисть базового цвета текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::brightText() const
Возвращает кисть переднего плана яркого текста текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::brush(QPalette::ColorGroup group, QPalette::ColorRole role) const
Возвращает кисть в указанной цветовой группе, используемую для заданной цветовой роли.
См. также color(), setBrush() и ColorRole.
const QBrush &QPalette::brush(QPalette::ColorRole role) const
Это перегруженная функция.
Возвращает кисть, установленную для заданной цветовой роли в текущей ColorGroup.
См. также color(), setBrush() и ColorRole.
const QBrush &QPalette::button() const
Возвращает кисть кнопки текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::buttonText() const
Возвращает кисть переднего плана текста кнопки текущей цветовой группы.
См. также ColorRole и brush().
qint64 QPalette::cacheKey() const
Возвращает число, идентифицирующее содержимое этого объекта QPalette. Разные объекты QPalette могут иметь одинаковый ключ, если они ссылаются на одинаковое содержимое.
cacheKey() изменяется при изменении палитры.
const QColor &QPalette::color(QPalette::ColorGroup group, QPalette::ColorRole role) const
Возвращает цвет в заданной цветовой группе, используемый для заданной цветовой роли.
См. также brush(), setColor() и ColorRole.
const QColor &QPalette::color(QPalette::ColorRole role) const
Это перегруженная функция.
Возвращает цвет, установленный для заданной цветовой роли в текущей ColorGroup.
См. также brush() и ColorRole.
QPalette::ColorGroup QPalette::currentColorGroup() const
Возвращает текущую цветовую группу палитры.
См. также setCurrentColorGroup().
const QBrush &QPalette::dark() const
Возвращает кисть тёмного цвета текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::highlight() const
Возвращает кисть выделения текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::highlightedText() const
Возвращает кисть выделенного текста текущей цветовой группы.
См. также ColorRole и brush().
bool QPalette::isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const
Возвращает true если ColorGroup cg и ColorRole cr были установлены ранее в этой палитре; в противном случае возвращает false.
ColorGroup cg должна быть меньше QPalette::NColorGroups, но вы можете использовать QPalette::Current. В этом случае будет использоваться ранее установленная текущая цветовая группа.
Цветовая роль cr должна быть меньше QPalette::NColorRoles.
См. также setBrush() и currentColorGroup().
bool QPalette::isCopyOf(const QPalette &p) const
Возвращает true если эта палитра и p являются копиями друг друга, т.е. одна из них была создана как копия другой, и ни одна из них не была впоследствии изменена; в противном случае возвращает false. Это гораздо строже, чем равенство.
См. также operator=() и operator==().
bool QPalette::isEqual(QPalette::ColorGroup cg1, QPalette::ColorGroup cg2) const
Возвращает true (обычно быстро), если цветовая группа cg1 равна cg2; в противном случае возвращает false.
const QBrush &QPalette::light() const
Возвращает кисть светлого цвета текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::link() const
Возвращает кисть цвета текста не посещённой ссылки текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::linkVisited() const
Возвращает кисть цвета текста посещённой ссылки текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::mid() const
Возвращает кисть цвета средней яркости текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::midlight() const
Возвращает кисть цвета средней яркости текущей цветовой группы.
См. также ColorRole и brush().
[since 5.12] const QBrush &QPalette::placeholderText() const
Возвращает кисть цвета текста-заполнителя текущей цветовой группы.
Примечание: До Qt 5.12 цвет текста-заполнителя был жёстко задан как QPalette::text().color() с альфа-каналом 128. В Qt 6 это независимый цвет.
Эта функция была добавлена в Qt 5.12.
См. также ColorRole и brush().
QPalette QPalette::resolve(const QPalette &other) const
Возвращает новую QPalette, являющуюся объединением текущего экземпляра и other. Цветовые роли, заданные в текущем экземпляре, имеют приоритет.
void QPalette::setBrush(QPalette::ColorRole role, const QBrush &brush)
Устанавливает кисть для заданной цветовой роли role на указанную кисть brush для всех групп в палитре.
См. также brush(), setColor(), и ColorRole.
void QPalette::setBrush(QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush &brush)
Это перегруженная функция.
Устанавливает кисть в указанной цветовой группе group, используемой для данной цветовой роли role, на brush.
См. также brush(), setColor(), и ColorRole.
void QPalette::setColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)
Устанавливает цвет в указанной цветовой группе group, используемой для данной цветовой роли role, на указанный сплошной цвет color.
См. также setBrush(), color(), и ColorRole.
void QPalette::setColor(QPalette::ColorRole role, const QColor &color)
Это перегруженная функция.
Устанавливает цвет, используемый для данной цветовой роли role во всех цветовых группах, на указанный сплошной цвет color.
См. также brush(), setColor(), и ColorRole.
void QPalette::setColorGroup(QPalette::ColorGroup cg, const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window)
Устанавливает группу в cg. Вы можете передать либо кисти, либо растровые изображения, либо обычные цвета для windowText, button, light, dark, mid, text, bright_text, base и window.
См. также QBrush.
void QPalette::setCurrentColorGroup(QPalette::ColorGroup cg)
Установить текущую цветовую группу палитры на cg.
См. также currentColorGroup().
const QBrush &QPalette::shadow() const
Возвращает кисть тени текущей цветовой группы.
См. также ColorRole и brush().
[since 5.0] void QPalette::swap(QPalette &other)
Меняет местами этот экземпляр палитры с other. Эта функция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 5.0.
const QBrush &QPalette::text() const
Возвращает кисть цвета текста переднего плана текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::toolTipBase() const
Возвращает кисть цвета фона всплывающей подсказки текущей цветовой группы. Эта кисть используется QToolTip и QWhatsThis.
Примечание: Всплывающие подсказки используют пассивную цветовую группу QPalette, так как всплывающие подсказки — это не активные окна.
См. также ColorRole и brush().
const QBrush &QPalette::toolTipText() const
Возвращает кисть цвета текста всплывающей подсказки текущей цветовой группы. Эта кисть используется QToolTip и QWhatsThis.
Примечание: Всплывающие подсказки используют пассивную цветовую группу QPalette, так как всплывающие подсказки — это не активные окна.
См. также ColorRole и brush().
const QBrush &QPalette::window() const
Возвращает кисть цвета окна (общего фона) текущей цветовой группы.
См. также ColorRole и brush().
const QBrush &QPalette::windowText() const
Возвращает кисть цвета текста окна (общего переднего плана) текущей цветовой группы.
См. также ColorRole и brush().
QVariant QPalette::operator QVariant() const
Возвращает палитру в виде QVariant
bool QPalette::operator!=(const QPalette &p) const
Возвращает true (медленно), если эта палитра отличается от p; в противном случае возвращает false (обычно быстро).
Примечание: Текущая ColorGroup не учитывается при сравнении палитр
См. также operator==().
bool QPalette::operator==(const QPalette &p) const
Возвращает true (обычно быстро), если эта палитра равна p; в противном случае возвращает false (медленно).
Примечание: Текущая ColorGroup не учитывается при сравнении палитр
См. также operator!=().
Связанные нечлены
QDataStream &operator<<(QDataStream &s, const QPalette &p)
Записывает палитру, p в поток s и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
QDataStream &operator>>(QDataStream &s, QPalette &p)
Читает палитру из потока, s в палитру p, и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qpalette.html