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

问题描述 投票:0回答:4

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

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

QPushButton
样式表选择器才有效。

我尝试过:

QPushButton#myBtnObjectName1 {

/* style definitions */

}
QPushButton#myBtnObjectName2 {

/* style definitions */

}

尝试用

#
替换
.
,或仅使用
#myBtnObjetNameX
。什么都不起作用。只是:

QPushButton {
/* style definitions */
}

我使用了错误的语法吗?或者,如果不从代码中的

QPushButton
派生并为每个类使用单独的类名,这根本不可能吗?

qt qtstylesheets
4个回答
9
投票

要使用

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

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

Qt 中的示例:

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

一个名为

QPushButton
pushButton
将被匹配,但不会匹配名为
pbt
的对象。


8
投票

您可以在 Qt Designer 中使用“accessibleName”来实现此目的。 在 qss 样式表中:

更通用:

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

或更具体:

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

3
投票

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


0
投票

如果我的对象的名称是 EDL_YELLOW_NAME 怎么办...有没有办法我可以应用 QPushButton[objectName^="EDL_"] 然后采用“YELLOW”部分来分配颜色?与其他标签?创建更好的通配符

© www.soinside.com 2019 - 2024. All rights reserved.