【发布时间】:2017-02-15 01:32:50
【问题描述】:
我正在尝试找到一种方法来为菜单项设置不同的颜色。
例如,Web Guide 是蓝色的,Email Support 是红色的,1.0 版是透明的。
我看了一会儿如何做到这一点,并尝试了 Qlabel 和 QWidgetAction,但这似乎只是作为文本,而不是与动作相同的方式。
我觉得这比它的价值更痛苦,但我想我还是把它扔在那里。
这就是我设置样式表和操作的方式:
self.setStyleSheet("""
QMenuBar {
background-color: rgb(49,49,49);
color: rgb(255,255,255);
border: 1px solid ;
}
QMenuBar::item {
background-color: rgb(49,49,49);
color: rgb(255,255,255);
}
QMenuBar::item::selected {
background-color: rgb(30,30,30);
}
QMenu {
background-color: rgb(49,49,49);
color: rgb(255,255,255);
border: 1px solid ;
}
QMenu::item::selected {
background-color: rgb(30,30,30);
}
""")
self.XactionHelpFAQ = QtGui.QAction('Web Guide', self)
self.XactionHelpEmail = QtGui.QAction('Email Support', self)
self.XactionHelpVersion = QtGui.QAction('Version 1.0', self)
self.Xmenubar = QtGui.QMenuBar(self)
self.Xmenubar.setObjectName('menubar')
self.Xmenubar.setGeometry(QtCore.QRect(0, 0, 684, 21))
self.Xmenubar.setSizeIncrement(QtCore.QSize(0, 0))
self.Xmenubar.setDefaultUp(False)
self.XmenuHelp = QtGui.QMenu('Help', self.Xmenubar)
self.XmenuHelp.addAction(self.XactionHelpFAQ)
self.XmenuHelp.addAction(self.XactionHelpEmail)
self.XmenuHelp.addAction(self.XactionHelpVersion)
【问题讨论】:
-
根据您的代码,您正在将样式表应用于包含您的 MenuBar 和 Menu 的 Widget,但不应用于
self.Xmenubar和self.XmenuHelp对象。尝试写self.Xmenubar.self.setStyleSheet(...)和self.XmenuHelp.setStyleSheet(...)。为了改进您的代码,您可以简单地将整个样式表设置为您的QApplication对象,这样您就可以确保您的样式表适用于所有 Qt 对象。 -
好电话,现在我的第二个窗口没有相同的菜单栏样式表了 :) 谢谢,这个 Ui 东西真的很繁琐。
-
是的,我确认 :)