Spec-Zone.ru › Qt 5.14

Стили Qt

Стили Qt представляют собой мощный механизм, позволяющий настраивать внешний вид виджетов, помимо того, что уже возможно с помощью наследования от QStyle. Концепции, терминология и синтаксис стилей Qt сильно вдохновлены 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.14/stylesheet.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API