2011-01-27 4 views
8

Для моего приложения я создал графический интерфейс в Qt Designer и преобразовал его в код python (2.6).Щелкните правой кнопкой мыши contextMenu на QPushButton

На некоторых из QPushButton (созданных с помощью конструктора) я хочу добавить контекстное меню правой кнопки мыши. Параметры меню зависят от статуса приложения.

Как реализовать такое контекстное меню?

ответ

14

Проверьте, подходит ли вам пример ниже. Главное, чтобы set context menu policy для виджета CustomContextMenu и подключиться к 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

Привет Serge, Спасибо за ваш ответ. Кажется, это моя проблема. rgds Артур. – ArtDijk

+0

, если он решает вашу проблему, PLS, отметьте свой вопрос как ответ, приветствует –

Смежные вопросы