2011-01-27 17 views
8

Dla mojej aplikacji utworzyłem GUI w Qt Designer i przekonwertowałem go na kod Pythona (2.6).Menu kontekstowe prawego przycisku myszy na QPushButton

Na niektórych z QPushButton (utworzonych za pomocą projektanta) chcę dodać menu kontekstowe z prawym przyciskiem myszy. Opcje menu zależą od statusu aplikacji.

Jak zaimplementować takie menu kontekstowe?

Odpowiedz

14

Sprawdź, czy poniższy przykład zadziała. Kluczową sprawą jest set context menu policy dla widżet CustomContextMenu i podłączyć do widgetu customContextMenuRequested sygnału:

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

Hi Serge, dzięki za odpowiedź. Wydaje się, że to mój jedyny problem. rgds Artur. – ArtDijk

+0

jeśli to rozwiąże problem, proszę zaznaczyć pytanie jako odpowiedź, pozdrowienia –

Powiązane problemy