QT StyleSheet Theme для всего приложения с использованием селекторов атрибутов - PullRequest
1 голос
/ 27 мая 2020

Фон:

У меня есть приложение Qt, состоящее из нескольких диалогов и windows. Я пытаюсь объединить все стили в единую таблицу стилей, которую я хочу загрузить в свой main.cpp с целью применения ко всему моему приложению (как я понимаю, это должно быть сделано). Приложение не должно изменять стили с этого момента.

Я хочу сделать это, так как стили могут смешиваться, et c если кто-то делает это или что-то похожее для каждого виджета в конструкторе QtCreator.

Проблема:

Я объясню конкретную c проблему, с которой я столкнулся, на примере из моего приложения .

У меня есть несколько вариантов простых диалогов, заголовок QLabel, сообщение QLabel (иногда подсказка QLabel) и либо один QPushButton «ОК», либо 2 «положительных» и «отрицательных» QPushButton .

Для моей темы я хотел бы установить стили для определенных c кнопок, меток и т. Д. c, которые я получил от здесь .

Пример CSS:

QPushButton {
    font-size: 10pt
    color: #111
} 

QPushButton[objectName="btnPostive"][objectName="btnProceed"] {
    font-size: 1pt
    color: #ccc
} 

QLabel {
    font-size: 9pt
    color: #111
} 

QLabel[objectName="lblTitle"] {
    font-size: 9pt
    color: #111
} 

Обратите внимание: [objectName="btnPostive"][objectName="btnProceed"] предназначен для применения стиля к кнопкам с objectName s btnPostive и btnProceed однако это не так.

То, что я собираюсь делать, считается передовой практикой, а второстепенный вопрос (предпочтительный пример тоже), применяя тот же стиль к выбранной группе виджетов, как это лучше всего сделать?

1 Ответ

0 голосов
/ 03 июня 2020

Если вы хотите управлять примененной таблицей стилей на основе имени объекта, вы можете использовать ID Selector QPushButton#objectName, см. Полную документацию . Вы разделяете несколько объектов с одной и той же таблицей стилей с помощью ,

Ваша таблица стилей должна быть такой. Обратите внимание, что вам также нужен ; в конце каждой строки.

QPushButton {
    font-size: 10pt;
    color: #111;
} 

QPushButton#btnPositive, QPushButton#btnProceed {
    font-size: 1pt;
    color: #ccc;
} 

QLabel {
    font-size: 9pt;
    color: #111;
} 

QLabel#lblTitle {
    font-size: 9pt;
    color: #00f;
} 
...