C++ setstylesheet未单独设置属性

C++ setstylesheet未单独设置属性,c++,qt,C++,Qt,嗨,我正在尝试在单独的行中设置不同的属性。 结果是,它只是正确地取最后一个,而不是所有属性 例: 此示例仅将文本颜色设置为白色,其他属性不会得到更新 我知道一个解决方案来设置所有的属性 lb->setStyleSheet("QLabel { background-color : black; color : white; border: 20px solid grey}"); 但是我想分别设置它们并使用setStyleSheet。 提前谢谢也许这样的东西更吸引人 lb->setSt

嗨,我正在尝试在单独的行中设置不同的属性。 结果是,它只是正确地取最后一个,而不是所有属性

例:

此示例仅将文本颜色设置为白色,其他属性不会得到更新

我知道一个解决方案来设置所有的属性

lb->setStyleSheet("QLabel { background-color : black; color : white; border: 20px solid grey}");
但是我想分别设置它们并使用setStyleSheet。
提前谢谢

也许这样的东西更吸引人

lb->setStyleSheet(
                  "border: 20px solid grey;"
                  "QLabel {"
                    "background-color : black;"
                    "color : white;"
                  "}"
);
基本上,这与将它们放在一个字符串中是一样的,但是它在视觉上被分成了几行

PS.不确定第一行是否为实际有效的css代码,因为它不在选择器框中。。。但它可能是Qt的一部分,所以我把它留下了

编辑
如果需要在代码中的不同位置添加每一行,则可以获取当前样式表,然后添加到其中

lb->setStyleSheet(lb->styleSheet() + "border: 20px solid grey;");
lb->setStyleSheet(lb->styleSheet() + "QLabel {background-color: black}");
lb->setStyleSheet(lb->styleSheet() + "QLabel {color: white}");

每次调用
setStyleSheet
时,它都会覆盖上一个值。
您可以做的是创建一个方法,将所有样式收集到一行中

QString collectAllStyles() const
{
  return QString("QLabel { background-color : %1; color : %2; border:  %3}").arg(backgroundStyleText()).arg(colorStyleText()).arg(borderStyleText());
}
更改其中一种颜色时,只需拨打此电话:

lb->setStyleSheet(collectAllStyles());

感谢ans@lochemage,但这不是我想要的,我希望它们在单独的执行行中,显然在不同的函数中。
lb->setStyleSheet(collectAllStyles());