QT 样式表主题,适用于使用属性选择器的整个应用程序

QT StyleSheet Theme for entire application using attribute selectors

本文关键字:选择器 属性 应用程序 样式 适用于 QT      更新时间:2023-10-16

背景:

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

我想这样做,因为如果有人这样做或对 QtCreator 设计器中的每个小部件进行简单处理,样式可能会混淆等。

问题:

我将用我的应用程序中的示例来解释我面临的一个特定问题。

我有几个简单对话框的变体,QLabel标题,QLabel消息(有时是QLabel提示(,以及单个"确定"QPushButton或2个QPushButton"积极"和"消极"。

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

示例 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"]旨在将样式应用于带有objectNamebtnPostive的按钮,btnProceed但事实并非如此。

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

如果要根据对象名称控制应用的样式表,可以使用ID 选择器QPushButton#objectName,请参阅完整文档。 您可以使用同一样式表分隔多个对象,

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

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;
}