2011-01-27 25 views
8

Para mi aplicación, he creado una GUI en Qt Designer y la he convertido en código python (2.6).Haz clic derecho en contextMenu en QPushButton

En algunos de los QPushButton (creados con el diseñador) deseo agregar un menú contextual con el botón derecho. Las opciones del menú dependen del estado de la aplicación.

¿Cómo implementar dicho menú contextual?

Respuesta

14

Compruebe si un ejemplo a continuación sería útil para usted. La clave es set context menu policy para su widget a CustomContextMenu y conectarse a la señal del 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

Hola Serge, Gracias por su respuesta. Parece resolver mi problema. rgds Arthur. – ArtDijk

+0

si resuelve su problema, por favor, marque su pregunta como respondida, saludos –

Cuestiones relacionadas