Текущий синтаксис, который вы используете, неверен во всех ваших примерах.
Селектор QFrame:QPushButton
будет просто игнорировать :QPushbutton
, поскольку он не является действительным псевдосостоянием . Кроме того, пробел перед селектором идентификаторов означает, что правило будет применяться к всем объектам-потомкам, называемым #btnName
(что, вероятно, не то, что вы предполагали, но именно поэтому первый пример вроде работает).
Я предполагаю, что вы действительно хотели, чтобы правило применялось к любому QPushButton
с objectName
из "btnName", который также является потомком QFrame
.
В этом случае первое правило должно быть:
QFrame QPushButton#btnName { css: blah; }
и два других правила должны быть:
QFrame QPushButton#btnName:hover { css: hoverstuff; }
QFrame QPushButton#btnName:pressed { css: pressedstuff; }
См. здесь для получения дополнительной информации о типах селектора.