Синтаксис таблицы стилей Qt: нацеливание на конкретную кнопку, а не на ВСЕ кнопки - PullRequest
3 голосов
/ 07 февраля 2011

У меня есть окно с двумя кнопками.

Я бы хотел украсить каждый из них своей таблицей стилей. Конечно, они оба имеют разные имена объектов, но, похоже, работает только общий селектор таблиц стилей QPushButton.

Я пытался:

QPushButton#myBtnObjectName1 {

/* style definitions */

}
QPushButton#myBtnObjectName2 {

/* style definitions */

}

Пробовал то же самое с заменой # на . или только с #myBtnObjetNameX. Ничего не работает Просто:

QPushButton {
/* style definitions */
}

Я использую неправильный синтаксис? Или это просто невозможно, не выводя из кода QPushButton и не используя отдельное имя класса для каждого?

Ответы [ 3 ]

5 голосов
/ 14 сентября 2015

Для этого вы можете использовать «availableName» в Qt Designer. И в таблице стилей QSS:

более универсальный:

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

или конкретнее:

QPushButton[accessibleName="bigred"] {
   background-color: red;
}
3 голосов
/ 07 февраля 2011

Ах да, необходимо также установить «AccessibleName» в Qt Designer, а не просто «ObjectName»

0 голосов
/ 04 апреля 2018

Для сопоставления экземпляров, использующих objectName, вы также можете использовать селектор ^=.Согласно стандарту :

[att ^ = val] Представляет элемент с атрибутом att, значение которого начинается с префикса "val".

Пример в Qt:

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

A QPushButton с именем pushButton будет соответствовать, но не объект с именем pbt.

...