Spec-Zone.ru › Qt 6.1

Стили Qt

Стили Qt — мощный механизм, позволяющий настраивать внешний вид виджетов помимо возможностей, предоставляемых наследованием от QStyle. Концепции, терминология и синтаксис стилей Qt сильно вдохновлены каскадными таблицами стилей (CSS) HTML, но адаптированы для мира виджетов.

Темы:

  • Обзор
  • Синтаксис таблиц стилей
  • Интеграция с 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-6.1/stylesheet.html

Spec-Zone.ru

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