是否可以将QSS样式应用于整个C ++命名空间

时间:2017-10-27 11:51:40

标签: c++ qt qt5 qtstylesheets

情况

在使用C ++&amp ;;的GUI项目中QT,我想将样式应用于QSS文件。在项目中,我通过以下方式在不同的命名空间中有几个类:

|-- namespaceA
    |-- subnamespaceA
        |-- class1
        `-- class2
    |-- subnamespaceB
        |-- class3
        `-- class4
    `-- subnamespaceC
        |-- class5
        `-- class6
|-- namespaceB
    `-- class7
`-- namespaceC
    `-- class8

根据The Style Sheet Syntax,样式可以应用于命名空间中的类,如下所示:

namespace--class selector
{
    ...
}

现在假设我想为namespaceA(1-6级)下的所有类中的每个QLabel设置文本颜色。

可能的解决方法

显然,这可以针对每个类单独完成:

namespaceA--subnamespaceA--class1 QLabel,
namespaceA--subnamespaceA--class2 QLabel,
namespaceA--subnamespaceB--class3 QLabel,
namespaceA--subnamespaceB--class4 QLabel,
namespaceA--subnamespaceC--class5 QLabel,
namespaceA--subnamespaceC--class6 QLabel
{
    color: red;
}

另一种可能性是全局定义与特定于命名空间的对象名称(QLabel::setObjectName("objectInNamespaceA"))相结合,与ID选择器匹配:

QLabel#objectInNamespaceA
{
    color: red;
}

问题

由于这两种解决方案都有些不灵活并导致更多(不必要的)代码,我想知道这是否可以像以下非工作方法那样完成?

namespaceA QLabel
{
    color: red;
}

0 个答案:

没有答案