Создание файла CSS

Использование индивидуальных таблиц стилей подразумевает необходимость создания и активации файлов *.css.

Файлы CSS содержат наборы правил стилей. Каждое правило стиля состоит из двух элементов: селектора и блока объявлений.

Селектор указывает на виджеты, к которым применяется правило. Блок объявлений задает подлежащие изменению свойства виджета(ов).

Ниже приведены несколько примеров, демонстрирующих применение общих правил в файле CSS, а также применение файлов CSS к панелям.

ПРИМЕР

QPushButton { color: red }

В примере в качестве селектора выступает класс кнопок QPushButton. Блоком объявлений является { color: red }. Данное правило устанавливает красный цвет рисунка для всех кнопок.

ПРИМЕР

QLineEdit, QComboBox { color: red; background-color: white }

Один и тот же блок объявлений может использоваться совместно с несколькими селекторами, перечисляемыми через запятую (,).

ПРИМЕР

PanelQT#myPanel QMenu { background-color: white }

PanelQT[type=»configuration»] { background-color: darkgray }

Для более точного указания объектов используются селекторы потомков и селекторы идентификаторов. В примере выше красный цвет фона применяется во всплывающих меню (QMenu) только в том случае, если они открываются в составе панели с именем «myPanel». Цвета фона панелей, имеющих тип «configuration», изменяется на темно-серый.

ПРИМЕЧАНИЕ

В том случае, если имя или тип панели/виджета изменяется во время выполнения программы, таблица стилей должна быть повторно применена при помощи функции «setApplicationProperty()«.

В одном блоке объявлений могут быть указаны несколько свойств. Свойства перечисляются в скобках ({}) и разделяются точкой с запятой.

Все записи свойств (в файле CSS), как правило, нечувствительны к регистру. Т.е. записи, созданные с использованием нижнего и верхнего регистров, интерпретируются одинаково. Исключением являются имена классов, имена объектов и имена свойств Qt, которые чувствительны к регистру.

Ниже в таблице приведен список наиболее важных селекторов.

СелекторПримерОписание
Универсальный селектор (universal selector)*Соответствует всем виджетам.
Селектор типа (type selector)QPushButtonСоответствует всем виджетам с указанным классом QT.
Селектор свойства (атрибута) (property selector)QPushButton[flat=»false»]Соответствует всем виджетам с указанным классом QT, свойство «flat» которых равняется» false» (ложь).Подобный селектор может использоваться для работы со свойствами с изменяющимися значениями.
Для проверки вхождения QString в свойство типа QStringList может использоваться ~= (вместо =).
Селектор класса (class selector).QPushButtonСоответствует всем виджетам, соответствующим указанному классу QT, исключая подклассы.Запись в колонке «Пример» эквивалентна записи *[class~=»QPushButton»].
Селектор идентификатора (ID selector)  QPushButton#okButtonСоответствует всем виджетам с указанным классом QT, имена объектов которых совпадают с указанным именем.
Селектор потомка (descendant selector)QDialog QPushButtonСоответствует всем виджетам с указанным классом QT, которые являются потомками (дочерними, производными от дочерних и т.д.) объектов, соответствующих первой части указанного селектора.
Дочерний селектор (селектор прямого потомка) (child selector)QDialog > QPushButtonСоответствует всем виджетам с указанным классом QT, которые являются непосредственными дочерними объектами тех объектов, которые соответствуют первой части указанного селектора.

ПРИМЕЧАНИЕ

Размер шрифта виджета «Вкладка» может быть задан только путем использования QTabBar (вместо QTabBar::tab).

ПРИМЕЧАНИЕ

Каждый виджет обладает свойством «Type» (тип), которое может использоваться в файле CSS в качестве селектора с возможностью определения дополнительных уровней отбора (см. таблицу выше). Пример: изменение цвета на красный для всех кнопок, которые используются для подачи команд закрытия (тип «BtnClose»).

Widget[type = «BtnClose»] { color: red }

ПРИМЕЧАНИЕ

При использовании атрибута «type» классов QCheckBox или QRadioButton следует использовать вышестоящий класс «MultiLabeledParent«, например:

MultiLabeledParent[type = «STYLE»] QCheckBox { color: red }

ПРИМЕР

Далее представлен внешний вид панели ASCIIMan.pnl без применения и при применении таблицы стилей. Оба рисунка дают представление о возможностях управления внешним видом панелей при помощи файлов CSS.

Рисунок: AsciiMan.pnl без применения таблицы стилей

Рисунок: Пример AsciiMan.pnl при применении таблицы стилей

QComboBox, QSpinBox, QLineEdit

{

  border: 2px solid blue;

  border-radius: 7px;

  padding: 0 3px;

  background: lightblue;

  selection-background-color: darkgray;

}

QComboBox::drop-down

{

  border-radius: 7px;

  border-left-width: 1px;

  border-left-color: darkgray;

  border-left-style: solid;

}

QComboBox::down-arrow

{

  image: url(pictures:down.xpm);

}

QCheckBox::indicator

{

  border: 1px solid blue;

  border-radius: 3px;

}

QCheckBox::indicator:checked

{

  image: url(pictures:checked.png);

}

MultiLabeledParent { background: rgba(0, 0, 0, 0); }

QPushButton

{

  border: 2px solid rgb(255, 167, 43);

  background: rgb(255, 224, 137);

  border-radius: 7px;

  font-family: «New Century Schoolbook»;

  font-size: 14px;

  font-style: bold;

}

PanelQT

{

  background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #FFAFC0, stop: 1 #FFFFFF);

}

TrendPlot, TrendScaleQT, ClockQT

{

  background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #03AFC0, stop: 1 #FF77FF);

}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *