Spec-Zone.ru › Qt 5.6

Стили 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 XP и macOS) родной движком темы.

Таблицы стилей позволяют выполнять все виды настроек, которые трудно или невозможно выполнить с помощью только QPalette. Если вам нужны жёлтые фоны для обязательных полей, красный текст для потенциально разрушительных кнопок или стильные флажки, таблицы стилей — это ответ.

Таблицы стилей применяются поверх текущего стиля виджета, что означает, что ваши приложения будут выглядеть так же, как родные, но любые ограничения таблицы стилей будут приняты во внимание. В отличие от манипуляций с палитрой, таблицы стилей гарантируют: если вы установите цвет фона QPushButton в красный, вы можете быть уверены, что кнопка будет иметь красный фон во всех стилях на всех платформах. Кроме того, Qt Designer предоставляет интеграцию с таблицами стилей, что упрощает просмотр эффектов таблицы стилей в различных стилях виджетов.

Кроме того, таблицы стилей могут быть использованы для предоставления отличительного внешнего вида и ощущения вашего приложения, без необходимости наследования от QStyle. Например, вы можете указать произвольные изображения для радиокнопок и флажков, чтобы они выделялись. С помощью этой техники вы также можете достичь незначительных настроек, которые обычно требуют наследования от нескольких классов стилей, таких как указание подсказки стиля. Приведенный ниже пример таблицы стилей определяет две отличительные таблицы стилей, которые вы можете попробовать и изменить по своему усмотрению.

Тема «Кофе», работающая в Windows XP Тема «Pagefold», работающая в Windows XP
Тема «Кофе», работающая в Ubuntu Linux Тема «Pagefold», работающая в macOS

Когда активна таблица стилей, QStyle, возвращаемый QWidget::style(), является оберточным «стилем таблицы стилей», а не платформоспецифическим стилем. Обёртный стиль гарантирует, что любой активный стиль таблицы стилей соблюдается, а в противном случае перенаправляет операции рисования на основной, платформоспецифический стиль (например, QWindowsXPStyle в Windows XP).

Начиная с 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.6/stylesheet.html

Spec-Zone.ru

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