Стили Qt
Стили Qt — это мощный механизм, позволяющий настраивать внешний вид виджетов помимо возможностей, предоставляемых наследованием от QStyle. Концепции, терминология и синтаксис стилей Qt сильно вдохновлены каскадными таблицами стилей (CSS) HTML (CSS), но адаптированы к миру виджетов.
Темы:
- Обзор
- Синтаксис таблиц стилей
- Интеграция с Qt Designer
- Настройка виджетов Qt с помощью таблиц стилей
- Справочник по таблицам стилей Qt
- Примеры таблиц стилей Qt
Примечание: Если таблицы стилей Qt используются на том же виджете, что и функции, устанавливающие внешний вид виджетов, такие как QWidget::setFont() или QTreeWidgetItem::setBackground(), таблицы стилей будут иметь приоритет в случае конфликта настроек.
Обзор
Таблицы стилей — это текстовые спецификации, которые можно установить для всего приложения с помощью 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.15/stylesheet.html