有没有人知道如何分别更改行的qMenu样式的示例(更改行的文本颜色,行bg的颜色,为文本内的任何文本添加下划线等)或者如果无法完成,无论如何都可以解决? 谢谢, 索博尔奇
分享我的代码:
类MainWindow(QtGui.QMainWindow): def init (个体经营): super(MainWindow,self)。 init () self.menus = [' alma',' korte',' banan'' ezmegaz']
acts = []
self.qmenu = QtGui.QMenu()
self.hip_fgrp = HipFileGroup( hip_data_file )
self.hip_fgrp.RemoveRepeats()
for i,hipf in enumerate(self.hip_fgrp.hipFileArr):
short_n = hipf.shortname
# prj = hipf.shortprjname
prj = ''
prj = hipf.shortprjname
if len(hipf.add_hipfolders):
prj = prj + ' \\ ' + hipf.add_hipfolders[0]
action = QtGui.QAction( prj+' \\ '+short_n, self, triggered=self.MenuSelected)
action.setData( i)
acts.append( action)
# print short_n
mpos = QtGui.QCursor
x = mpos.pos().x()
y = mpos.pos().y()
for action in acts:
self.qmenu.addAction(action)
self.qmenu.show()
self.qmenu.setGeometry( x-20, y-20, 0, 0)
self.qmenu.exec_()
def MenuSelected(self): action = self.sender() hipfile_id = action.data() hipfile = self.hip_fgrp.hipFileArr [hipfile_id] hipfile.show_all() hipfile_last = hipfile.getLastVersion(hipfile.hipfullspec) print hipfile_last 如果不是in_sublime: 进口侯 hou.hipFile.load(hipfile_last,hip_accept)
答案 0 :(得分:1)
我不知道任何简单的方法。这似乎是一个长期存在的问题。但是通过一些工作几乎可以做任何事情:
您可以使用QAction
而不是在菜单中使用QWidgetAction
,这样您就可以自定义用于表示菜单中操作的窗口小部件。在这里,我使用支持富文本的QLabel
。但是,请记住,小部件需要处理鼠标本身(这里我称之为trigger
)。
import sys
from PySide import QtGui
class MyLabel(QtGui.QLabel):
def __init__(self,action):
super(MyLabel,self).__init__()
self.action = action
def mouseReleaseEvent(self,e):
self.action.trigger()
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
wAction = QtGui.QWidgetAction(self)
ql = MyLabel(wAction)
ql.setText("<b>Hello</b> <i>Qt!</i>")
wAction.setDefaultWidget(ql)
wAction.triggered.connect(self.close)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(wAction)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Menubar')
self.show()
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在一个功能更全面的示例中,您可以继承QWidgetAction
来处理不同的操作上下文,并使用不同的小部件,但这应该可以帮助您入门。