2011-01-27 14 views
8

Per la mia app ho creato una GUI in Qt Designer e l'ho convertita in codice python (2.6).Tasto destro contextMenu su QPushButton

Su alcuni degli QPushButton (creati con il designer) voglio aggiungere un menu di scelta rapida con il tasto destro del mouse. Le opzioni del menu dipendono dallo stato dell'applicazione.

Come implementare tale menu di scelta rapida?

risposta

14

Controlla se un esempio di seguito potrebbe funzionare per te. La cosa fondamentale è quello di set context menu policy per il vostro widget per CustomContextMenu e connettersi a customContextMenuRequested segnale del widget:

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, Grazie per la risposta. Sembra risolvere il mio problema. Arthur Arthur. – ArtDijk

+0

se risolve il problema, pls, segna la domanda come risposta, saluti –

Problemi correlati