Стили Qt
Стили Qt — мощный механизм, позволяющий настраивать вид виджетов, помимо того, что уже возможно с помощью наследования от QStyle. Концепции, терминология и синтаксис стилей Qt сильно вдохновлены HTML каскадными таблицами стилей (CSS), но адаптированы к миру виджетов.
Темы:
- Обзор
- Синтаксис таблиц стилей
- Интеграция с Qt Designer
- Настройка виджетов Qt с помощью таблиц стилей
- Справочник по таблицам стилей Qt
- Примеры таблиц стилей Qt
Обзор
Таблицы стилей — это текстовые спецификации, которые могут быть заданы для всего приложения с помощью QApplication::setStyleSheet() или для конкретного виджета (и его потомков) с помощью QWidget::setStyleSheet(). Если установлено несколько таблиц стилей на разных уровнях, Qt выводит эффективную таблицу стилей из всех установленных. Это называется каскадированием.
Например, следующая таблица стилей задает, что все QLineEdit должны использовать желтый цвет фона, а все QCheckBox — красный цвет текста:
QLineEdit { background: yellow }
QCheckBox { color: red }
Для такого рода настройки таблицы стилей намного мощнее, чем QPalette. Например, может показаться заманчивым установить роль QPalette::Button в красный для QPushButton, чтобы получить красную кнопку. Однако это не гарантировало бы работы для всех стилей, потому что авторы стилей ограничены рекомендациями различных платформ и (в Windows и macOS) движком родной темы.
Таблицы стилей позволяют выполнять все виды настроек, которые сложно или невозможно выполнить только с помощью QPalette. Если вам нужны желтые фоны для обязательных полей, красный текст для потенциально разрушительных кнопок или стильные флажки, таблицы стилей — это ответ.
Таблицы стилей применяются поверх текущего стиля виджета, что означает, что ваши приложения будут выглядеть максимально естественно, но любые ограничения таблицы стилей будут приняты во внимание. В отличие от изменения палитры, таблицы стилей предоставляют гарантии: если вы установите цвет фона QPushButton в красный, вы можете быть уверены, что кнопка будет иметь красный фон во всех стилях на всех платформах. Кроме того, Qt Designer предоставляет интеграцию с таблицами стилей, что облегчает просмотр эффектов таблицы стилей в разных стилях виджетов.
Кроме того, таблицы стилей могут использоваться для придания вашему приложению отличительного вида и ощущения, без необходимости наследования от QStyle. Например, вы можете задать произвольные изображения для радиокнопок и флажков, чтобы выделить их. С помощью этой техники вы также можете добиться незначительных настроек, которые обычно требуют наследования нескольких классов стилей, таких как задание подсказки стиля. Пример таблицы стилей, показанный ниже, определяет две отличительные таблицы стилей, которые вы можете попробовать и изменить по своему усмотрению.
| Тема Pagefold, работающая в Windows |
| Тема Coffee, работающая в Ubuntu Linux | Тема Pagefold, работающая в macOS |
Когда активна таблица стилей, QStyle, возвращаемый QWidget::style(), представляет собой обернутый «стиль таблицы стилей», а не платформенно-специфичный стиль. Стиль-обертка гарантирует, что любая активная таблица стилей уважается, а в противном случае передаёт операции рисования в основной, платформенно-специфический стиль (например, QWindowsVistaStyle в Windows).
Начиная с Qt 4.5, таблицы стилей Qt полностью поддерживают macOS.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/stylesheet.html