Я пытаюсь установитьStyleSheet на КНОПКУ только для одного параметра на панели инструментов, а именно для объекта menuSystem в строке меню:
Структура имеет вид:
NAME Class
menuBar QMenu
-menuFile QMenu
-menuSystem QMenu <- Want to color just the button for this
-action1 QAction
-action2 QAction
-action3 QAction
-menuView QMenu
ЕслиЯ использую:
ui.menuBar.setStyleSheet("QMenu::item {background-color: rgb(80, 255, 80)}"
Он окрашивает все кнопки (очевидно)
Если я использую:
ui.menuSystem.setStyleSheet("{*same styling*}")
Он не окрашивает кнопку 'system',но окрашивает все содержимое, то есть действия 1, 2 и 3.
С другой стороны, если я использую псевдосостояние, подобное: выбрано, например:
ui.menuSystem.setStyleSheet("QMenu::item:selected {*same styling*}"
Цвета толькокнопка, где находится мой курсор, включая «menuSystem»
Это заставляет меня задуматься, есть ли способ определить псевдосостояние, используя функцию для перехвата сигнала и его применения?
Редактировать: Я попытался определить класс в соответствии с предложением @Matphy:
class MSystem(QMenu) :
pass
в msystem.h, который находится в решении, и:
import msystem
...
self.parent.ui.menuBar.setStyleSheet("MSystem::item {background-color: rgb(255, 80, 80)}")
Класс элемента был измененсоответственно:
или в файле .ui:
<widget class="MSystem" name="MenuSystem">
<property name="title">
<string>&System</string>
</property>
<widget class="QMenu" name="menuSoftware">*stuff*</wdiget>
*and more stuff*
</widget>
и внизу:
<customwidgets>
<customwidget>
<class>MSystem</class>
<extends>QMenu</extends>
<header>msystem.h</header>
</customwidget>
</customwidgets>
но ничего не происходит ...