如何在Qt中的特定类中设置QLabel的样式表

如何在Qt中的特定类中设置QLabel的样式表,qt,stylesheet,qlabel,Qt,Stylesheet,Qlabel,我有一个这样的测试样本:在类B中,它只有一个QVector来存储一些QLabel,如下所示: class B : public QWidget { public: B(QWidget *parent = 0); QVector<QLabel*> mLbls; }; 所以我要做的是将所有QLabel设置为红色,只有在Class B中。但问题是,如果我使用setStyleSheet(“QLabel{background color:red;}”),所有QLabel(甚

我有一个这样的测试样本:
类B
中,它只有一个
QVector
来存储一些
QLabel
,如下所示:

class B : public QWidget
{
public:
    B(QWidget *parent = 0);

    QVector<QLabel*> mLbls;
};
所以我要做的是将所有
QLabel
设置为红色,只有在
Class B
中。但问题是,如果我使用
setStyleSheet(“QLabel{background color:red;}”),所有
QLabel
(甚至
Class A
中的
QLabel
)都将设置为红色背景色

我不知道如何仅为
CLass B
对象设置所有样式表。我知道我可以用这种方式来实现我的目标:

for(int i = 0; i < 5; i++) {
    testingB.mLbls[i] = new QLabel(mWidget);
    testingB.mLbls[i]->setText(QString::number(i));
    testingB.mLbls[i]->setStyleSheet("QLabel {background-color: red;}"); //new added
    hLayout->addWidget(testingB.mLbls[i]);
}
for(int i=0;i<5;i++){
testingB.mLbls[i]=新的QLabel(mWidget);
testingB.mLbls[i]>setText(QString::number(i));
testingB.mLbls[i]>setStyleSheet(“QLabel{background color:red;}”);//新增
hLayout->addWidget(testingB.mLbls[i]);
}

通过使用这种方式,我认为逐个为它们设置样式表非常麻烦,而且有时我可能需要以不同的方式设置一些
QLabel
样式表,而其余的样式表都是相同的。如果我有更多的对象并逐个设置它们,这可能会花费很多时间。
因此我假设有一种方法可以一次性为
类中的某些对象设置样式表。希望我能把我的问题解释清楚。要解决这个问题,我能做什么?
谢谢。

Qt CSS语法允许您为CSS规则()选择子项,但它基于QObjects的父级关系,而不是在哪个类中包含指向QLabel的指针

此CSS仅适用于
QLabel
对象,这些对象是
YourContainerClassWidget
对象的子对象或孙子对象

// C++
auto container = new YourContainerClassWidget;
auto label = QLabel(container); // The label is now a child of container

// CSS
YourContainerClassWidget QLabel { // Descendant selector
    background-color: red;
}

// You can also apply only to direct children with this syntax
YourContainerClassWidget > QLabel { // Child selector
    background-color: red;
}

为什么你要将B声明为一个小部件,我认为它是一个容器而不是一个小部件,因为你从未将它添加到窗口?@eyllanesc哦,也许我在那里犯了一个错误,因为我认为它应该是一个小部件,我只是对这些概念有点困惑。但容器或小部件可能并不重要,我只想学习如何为“B类”中的所有“QLabel”设置样式表。有什么方法可以教我吗?
// C++
auto container = new YourContainerClassWidget;
auto label = QLabel(container); // The label is now a child of container

// CSS
YourContainerClassWidget QLabel { // Descendant selector
    background-color: red;
}

// You can also apply only to direct children with this syntax
YourContainerClassWidget > QLabel { // Child selector
    background-color: red;
}