2011-01-27 224 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