Je ne peux pas parler pour python, mais il est assez facile en C++.
premier après avoir créé le widget que vous définissez la stratégie:
w->setContextMenuPolicy(Qt::CustomContextMenu);
vous connecter à un emplacement de l'événement menu contextuel:
connect(w, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
Enfin, vous implémentez la fente:
void A::ctxMenu(const QPoint &pos) {
QMenu *menu = new QMenu;
menu->addAction(tr("Test Item"), this, SLOT(test_slot()));
menu->exec(w->mapToGlobal(pos));
}
c'est comme ça que vous le faites en C++, ne devrait pas être trop différent dans l'API python.
EDIT: après avoir regardé autour sur Google, voici la partie de configuration de mon exemple en python:
self.w = QWhatever();
self.w.setContextMenuPolicy(Qt.CustomContextMenu)
self.connect(self.w,SIGNAL('customContextMenuRequested(QPoint)'), self.ctxMenu)
noter que dans le PyQt4, l'emplacement CustomContextMenu dans le paquet est ici: PyQt4.QtCore.Qt.CustomContextMenu –
Gotta love le downvote au hasard après deux ans et 19 upvotes :-P –
Le downvote était accidentelle et je Je suis vraiment vraiment désolé. La réponse m'a vraiment beaucoup aidé. –