【问题标题】:Qt Multiple Types of Styles for an item (QLabel, QPushbutton, ...)Qt 项目的多种样式(QLabel,QPushbutton,...)
【发布时间】:2025-12-30 16:35:12
【问题描述】:
  • 我正在使用 Qt Creator 3.6.1 设计一个 UI
  • 我正在使用 Qt 设计器表单。
  • 我有一个包含 20 个 QLabel 的 QWidget。
  • 我希望这些 QLabel 中的 10 个具有红色背景色
    其他 10 个具有蓝色背景色。
  • 我想为此目的使用 css。

我发现您可以在父小部件 css 中设置所有 QLabel 的样式,这将为所有标签设置样式。

QLabel
{
    background-color: red
}

但在我的情况下,我想要两类样式。 有没有办法不单独设置其余 10 个蓝色标签的样式?

我知道我可以按名称设置元素的样式,但这是一项巨大的工作量。

【问题讨论】:

  • 为什么不直接更改标签的调色板?在标签上调用setAutoFillBackground(true) 并设置为具有QPalette::Window 角色集的调色板。用一个调色板画红色,用另一个调色板画蓝色。

标签: css qt qt-designer qlabel


【解决方案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;
}

【讨论】: