Qt Несколько типов стилей для элемента (QLabel, QPushbutton, )

  • Я разрабатываю пользовательский интерфейс с Qt Creator 3.6.1.
  • Я использую дизайнерскую форму Qt.
  • У меня есть QWidget, который содержит 20 QLabels.
  • Я хочу, чтобы у 10 из этих QLabels был красный цвет фона
    , а у остальных 10 — синий цвет фона.
  • Я хочу использовать css для этой цели.

Я узнал, что вы можете стилизовать все QLabels в родительском виджете css, который будет стилизовать все метки.

QLabel
{
    background-color: red
}

Однако в моем случае мне нужны два класса стилей. Есть ли способ сделать это, не стилизуя каждую из оставшихся 10 синих меток по отдельности?

Я знаю, что могу стилизовать элементы по имени, но это требует огромных усилий.


person AlirezaK    schedule 06.05.2016    source источник
comment
Почему бы просто не изменить палитру для меток? Вызовите setAutoFillBackground(true) на метках и установите палитру с набором ролей QPalette::Window. Используйте одну палитру для красного, другую для синего.   -  person anonymous    schedule 06.05.2016


Ответы (1)


Если вы хотите использовать класс CSS, вы должны установить имя класса для своих QLabels:

QLabel* redLabel = new QLabel("red label");
QLabel* blueLabel = new QLabel("blue label");

redLabel->setProperty("class","my-1st-class");
blueLabel->setProperty("class","my-2nd-class");

Затем используйте имена классов в файле CSS:

.my-1st-class{
     background-color: red;
}

.my-2nd-class{
     background-color: blue;
}
person SRD    schedule 06.05.2016