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

时间:2011-02-07 18:52:09

标签: qt qtstylesheets

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

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

我试过了:

QPushButton#myBtnObjectName1 {

/* style definitions */

}
QPushButton#myBtnObjectName2 {

/* style definitions */

}

尝试将#替换为.或仅使用#myBtnObjetNameX时尝试相同。什么都行不通。只是:

QPushButton {
/* style definitions */
}

我使用了错误的语法吗?或者,如果不在代码中导出QPushButton并为每个使用单独的类名称

,这是不可能的

3 个答案:

答案 0 :(得分:5)

您可以在Qt Designer中使用“accessibleName”。 在qss样式表中:

更普遍:

[accessibleName="alert-error"] {
    color: red;
}

或更具体:

QPushButton[accessibleName="bigred"] {
   background-color: red;
}

答案 1 :(得分:3)

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

答案 2 :(得分:0)

要使用objectName匹配实例,您还可以使用选择器^=。根据{{​​3}}:

  

[att ^ = val]表示具有att属性值的元素   以前缀" val"开始。

Qt中的示例:

QPushButton[objectName^="push"] { background-color: red; }

将匹配名为QPushButton的{​​{1}},但不会匹配名为pushButton的对象。