Как отформатировать определенные элементы в Qmenu или Toolboxes?Можно ли определить псевдо-состояние или субконтроль? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь установить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)}")

Класс элемента был измененсоответственно:

screenshot

или в файле .ui:

<widget class="MSystem" name="MenuSystem">
    <property name="title">
        <string>&amp;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>

но ничего не происходит ...

1 Ответ

0 голосов
/ 16 октября 2018

Создайте свой собственный класс (наследуйте QMenu):

class MenuSystem(QMenu):
     pass

Затем вы напишите:

ui.menuBar.setStyleSheet("MenuSystem::item {background-color: rgb(80, 255, 80)}")
...