我试图在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*}")
它不会为“系统”按钮着色,而是为所有内容着色,即操作1、2和3。
另一方面,如果我使用伪状态,例如:selected:
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>
但什么也没发生...
答案 0 :(得分:0)
创建自己的课程(继承close()
):
.ui-menu .ui-menu-item-wrapper { /* the selector */
position: relative; /* pre-existing css */
padding: 3px 1em 3px .4em; /* pre-existing css */
color: red; /* new css */
background: yellow; /* new css */
}
然后您编写:
QMenu