如何格式化 Qmenu 或工具箱中的特定项目?是否可以定义伪状态或子控件?
How to format specific items in Qmenu or Toolboxes? Is it possible to define a pseudo-state or sub-control?
我正在尝试为工具栏中的一个选项设置 BUTTON 上的 setStyleSheet,即 menuBar 中的 "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。
另一方面,如果我使用像 :selected 这样的伪状态,例如:
ui.menuSystem.setStyleSheet("QMenu::item:selected {*same styling*}"
它只为我的光标所在的按钮着色,包括 "menuSystem"
这让我想到,有没有一种方法可以使用函数来定义伪状态来捕获信号并应用它?
编辑:我尝试按照@Matphy 的建议定义 class:
class MSystem(QMenu) :
pass
in msystem.h 是在解中,并且:
import msystem
...
self.parent.ui.menuBar.setStyleSheet("MSystem::item {background-color: rgb(255, 80, 80)}")
项目的class已相应更改:
或在 .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>
但什么也没发生...
创建您自己的class(继承QMenu
):
class MenuSystem(QMenu):
pass
然后你写:
ui.menuBar.setStyleSheet("MenuSystem::item {background-color: rgb(80, 255, 80)}")
我正在尝试为工具栏中的一个选项设置 BUTTON 上的 setStyleSheet,即 menuBar 中的 "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。
另一方面,如果我使用像 :selected 这样的伪状态,例如:
ui.menuSystem.setStyleSheet("QMenu::item:selected {*same styling*}"
它只为我的光标所在的按钮着色,包括 "menuSystem"
这让我想到,有没有一种方法可以使用函数来定义伪状态来捕获信号并应用它?
编辑:我尝试按照@Matphy 的建议定义 class:
class MSystem(QMenu) :
pass
in msystem.h 是在解中,并且:
import msystem
...
self.parent.ui.menuBar.setStyleSheet("MSystem::item {background-color: rgb(255, 80, 80)}")
项目的class已相应更改:
或在 .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>
但什么也没发生...
创建您自己的class(继承QMenu
):
class MenuSystem(QMenu):
pass
然后你写:
ui.menuBar.setStyleSheet("MenuSystem::item {background-color: rgb(80, 255, 80)}")