Стили Qt
Стили Qt — мощный механизм, позволяющий настроить внешний вид виджетов помимо возможности, предоставляемой наследованием от QStyle. Концепции, терминология и синтаксис стилей Qt сильно вдохновлены каскадными таблицами стилей (CSS) HTML http://www.w3.org/Style/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/qt-5.12/stylesheet.html