2011-01-27 252 views
8

对于我的应用我已经创造了Qt设计的GUI,并转换成蟒蛇(2.6)代码文本菜单。右键点击QPushButton

在一些QPushButton的(与设计师创建)我想添加右键单击上下文菜单。菜单选项取决于应用程序状态。

如何实现这样的上下文菜单?

回答

14

检查是否有下面的例子会为你工作。关键是要set context menu policy你的小部件CustomContextMenu并连接到widget的customContextMenuRequested信号:

import sys 
from PyQt4 import QtGui, QtCore 

class MainForm(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(MainForm, self).__init__(parent) 

     # create button 
     self.button = QtGui.QPushButton("test button", self)  
     self.button.resize(100, 30) 

     # set button context menu policy 
     self.button.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 
     self.button.customContextMenuRequested.connect(self.on_context_menu) 

     # create context menu 
     self.popMenu = QtGui.QMenu(self) 
     self.popMenu.addAction(QtGui.QAction('test0', self)) 
     self.popMenu.addAction(QtGui.QAction('test1', self)) 
     self.popMenu.addSeparator() 
     self.popMenu.addAction(QtGui.QAction('test2', self))   

    def on_context_menu(self, point): 
     # show context menu 
     self.popMenu.exec_(self.button.mapToGlobal(point))   

def main(): 
    app = QtGui.QApplication(sys.argv) 
    form = MainForm() 
    form.show() 
    app.exec_() 

if __name__ == '__main__': 
    main() 
+0

你好哔叽,感谢您的答复。它似乎要解决我的问题。 rgds亚瑟。 – ArtDijk 2011-01-30 10:43:14