Qt样式表语法:定位特定按钮,而不是所有按钮

Jas*_*enX 4 qt qtstylesheets

我有一个带两个按钮的窗口.

我想用不同的样式表装饰每一个.当然,它们都有不同的对象名称,但似乎只有通用QPushButton样式表选择器才有效.

我试过了:

QPushButton#myBtnObjectName1 {

/* style definitions */

}
QPushButton#myBtnObjectName2 {

/* style definitions */

}
Run Code Online (Sandbox Code Playgroud)

用替换#a .或者用#myBtnObjetNameX唯一的替换来尝试相同的.什么都行不通.只是:

QPushButton {
/* style definitions */
}
Run Code Online (Sandbox Code Playgroud)

我使用了错误的语法吗?或者,如果不从QPushButton代码中派生并为每个代码使用单独的类名,这是不可能的?

小智 5

您可以在Qt Designer中使用"accessibleName".在qss样式表中:

更普遍:

[accessibleName="alert-error"] {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

或者更具体:

QPushButton[accessibleName="bigred"] {
   background-color: red;
}
Run Code Online (Sandbox Code Playgroud)


Tar*_*rod 5

要使用 匹配实例objectName,您还可以使用选择器^=。根据标准

[att^=val] 表示一个具有att 属性的元素,其值以前缀“val”开头。

Qt 中的示例:

QPushButton[objectName^="push"] { background-color: red; }
Run Code Online (Sandbox Code Playgroud)

一个QPushButtonpushButton会被匹配,而是叫不是一个对象pbt


Jas*_*enX 3

啊,是的,Qt Designer 中的“AccessibleName”也需要设置,而不仅仅是“ObjectName”