【问题标题】:QT StyleSheet Theme for entire application using attribute selectors使用属性选择器的整个应用程序的 QT StyleSheet 主题
【发布时间】:2020-09-13 19:36:32
【问题描述】:

背景:

我有一个由多个对话框和窗口组成的 Qt 应用程序。我正在尝试将所有样式压缩为一个样式表,我想将其加载到我的main.cpp 中,目的是将其应用于我的整个应用程序(据我所知应该这样做)。 从现在开始,应用程序不应更改样式。

我想这样做,因为样式可能会混淆,等等,如果一个人使用 this 或 QtCreator 设计器中的每个小部件类似的东西。

问题:

我将通过我的应用程序中的一个示例来解释我面临的一个具体问题。

我有几个简单对话框的变体、QLabel 标题、QLabel 消息(有时是 QLabel 提示),以及一个“ok”QPushButton 或 2 个 QPushButtons“positive”和“negative”。

对于我的主题,我想为从here 获得的特定按钮、标签等设置样式。

示例 CSS:

QPushButton {
    font-size: 10pt
    color: #111
} 

QPushButton[objectName="btnPostive"][objectName="btnProceed"] {
    font-size: 1pt
    color: #ccc
} 

QLabel {
    font-size: 9pt
    color: #111
} 

QLabel[objectName="lblTitle"] {
    font-size: 9pt
    color: #111
} 

请注意,[objectName="btnPostive"][objectName="btnProceed"] 旨在将样式应用于具有objectNamebtnPostivebtnProceed 的按钮,但它不会。

我打算做什么被认为是最佳实践,以及一个子问题(也是首选示例)将相同的样式应用于一组选定的小部件,应该如何做到最好。

【问题讨论】:

    标签: c++ css qt qwidget qtstylesheets


    【解决方案1】:

    如果您想根据对象名称控制应用的样式表,可以使用ID 选择器 QPushButton#objectName,查看完整的documentation。你用,分隔多个具有相同样式表的对象

    你的样式表应该是这样的。请注意,您还需要在每行末尾添加;

    QPushButton {
        font-size: 10pt;
        color: #111;
    } 
    
    QPushButton#btnPositive, QPushButton#btnProceed {
        font-size: 1pt;
        color: #ccc;
    } 
    
    QLabel {
        font-size: 9pt;
        color: #111;
    } 
    
    QLabel#lblTitle {
        font-size: 9pt;
        color: #00f;
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多