Pyside Qmenu例子

时间:2015-07-02 16:50:41

标签: python pyside

有没有人知道如何分别更改行的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)

1 个答案:

答案 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来处理不同的操作上下文,并使用不同的小部件,但这应该可以帮助您入门。