I have a window with two buttons.
I'd like to decorate each one with a different stylesheet. They both have different object names, of course, but it seems that only the generic QPushButton
stylesheet selector works.
I tried:
QPushButton#myBtnObjectName1 {
/* style definitions */
}
QPushButton#myBtnObjectName2 {
/* style definitions */
}
Tried the same with replacing the #
with a .
, or having the #myBtnObjetNameX
only. Nothing works. Just:
QPushButton {
/* style definitions */
}
Am I using a wrong syntax? Or is this simply impossible without deriving from QPushButton
in code and using a separate class name for each?
You can use "accessibleName" in Qt Designer for this. And in qss stylesheet:
more universal:
[accessibleName="alert-error"] {
color: red;
}
or be more specific:
QPushButton[accessibleName="bigred"] {
background-color: red;
}
To match instances using the objectName
, you can also use the selector ^=
. According to the standard:
[att^=val] Represents an element with the att attribute whose value begins with the prefix "val".
Example in Qt:
QPushButton[objectName^="push"] { background-color: red; }
A QPushButton
called pushButton
would be matched, but not an object called pbt
.
Ah yes, the "AccessibleName" in Qt Designer needs to be set too, not just "ObjectName"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With