J'essaie d'ajouter un menu contextuel (clic droit) à un Qt QListView. Je vois dans Qt 3.3 il y a "contextMenuRequested" (que je pourrais utiliser) - http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested. Cependant, je ne peux pas voir une telle méthode dans Qt4. Est-ce que quelqu'un sait comment ajouter un menu contextuel à un QListView?Qt QListView - menus contextuels?
Répondre
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 .
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
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.
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
customContextMenuRequested() est un signal, pas une fonction Overridable –