2011-01-27 22 views
8

私のアプリケーションでは、Qt DesignerでGUIを作成し、Python(2.6)コードに変換しました。QPushButtonの右クリックcontextMenu

QPushButton(デザイナーで作成されたもの)の中には、右クリックのコンテキストメニューを追加したいものがあります。メニューオプションは、アプリケーションの状態によって異なります。

このようなコンテキストメニューを実装するにはどうすればよいですか?

答えて

14

下記の例が効果的かどうかを確認してください。重要なのは、CustomContextMenuへのウィジェットのためのset context menu policyにあるとウィジェットの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

こんにちはセルジュ、ご返信いただきありがとうございます。それは私の問題を排除しているようだ。 Arthur。 – ArtDijk

+0

問題が解決した場合は、pls、あなたの質問に回答としてマークしてください –

関連する問題