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

Я узнал, что вы можете стилизовать все QLabels в родительском виджете css, который будет стилизовать все метки.Qt Многократные Типы стилей для элемента (QLabel, QPushButton, ...)

QLabel 
{ 
    background-color: red 
} 

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

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

+0

Почему не просто изменить палитра для этикеток? Вызовите 'setAutoFillBackground (true)' на ярлыках и установите палитру с установленной ролью 'QPalette :: Window'. Используйте одну палитру для красного, другую для синего. –

ответ

5

Если вы хотите использовать класс 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; 
} 
Смежные вопросы