2010-05-19 3 views

Répondre

2

Je ne sais pas pourquoi le signal a été supprimé mais il est encore un QWidget de sorte que vous pouvez toujours passer outre

void QWidget::contextMenuEvent (QContextMenuEvent*); 

ou

void QWidget::customContextMenuRequested(const QPoint& pos); 

selon votre paramètre de stratégie de menu contextuel pour le widget .

+2

customContextMenuRequested() est un signal, pas une fonction Overridable –

6

Je ne sais pas ce que vous essayez d'accomplir, mais vous pouvez facilement ajouter un menu contextuel à un widget en appelant QWidget::AddAction(QAction*) avec les actions que vous souhaitez ajouter à votre menu contextuel et le réglage de la politique de menu contextuel

widget->setContextMenuPolicy(Qt::ActionsContextMenu); 

le widget préparera et afficher le menu contextuel, tout ce que vous devez faire est de brancher les actions triggered() signaux aux gestionnaires appropriés

16

Selon la façon dont vous avez configuré le ContextMenuPolicy dans le QWidget vous avez quelques options Si vous l'avez défini sur Qt::DefaultContextMenu, remplacez simplement la fonction protégée contextMenuEvent(QContextMenuEvent*) par QWidget. Je crois que c'est le défaut.

Si vous l'avez défini sur Qt::ActionsContextMenu, ajoutez simplement toutes vos actions à votre widget et laissez le système Qt gérer le menu contextuel.

Si vous l'avez défini sur Qt::CustomContextMenu, vous devez vous connecter au signal customContextMenuRequested() et implémenter votre propre gestionnaire de menu contextuel.

Ceci est documenté dans la documentation ContextMenuPolicy disponible en ligne.

+0

liens mis à jour à la description contextMenuPolicy: [QT5] (http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop) et [qt4] (http://doc.qt.io/qt-4.8/qwidget.html#contextMenuPolicy-prop) – avtomaton

Questions connexes