2017-06-17 5 views
2

J'ai un couple de QDockWidgets qui ne sont pas tous en closeabale (en utilisant Qt 5.6). Par conséquent, le menu contextuel qui s'affiche lorsque vous cliquez avec le bouton droit sur une barre de titre de l'un d'entre eux a désactivé les entrées et je souhaite désactiver le menu contextuel entier.Comment désactiver le menu contextuel d'une barre de titre QDockWidget

J'ai essayé de définir la propriété contextMenuPolicy à NoContextMenu sans succès.

J'ai ensuite essayé d'utiliser une sous-classe de QDockWidget, remplacer le ContextMenuEvent et l'ignorer. Le menu est toujours affiché.

J'ai ensuite essayé d'installer un filtre d'événements pour attraper le ContextMenuEvent, mais il n'a pas pris tout, à PaintEvents, ResizeEvents etc.

Je suis d'idées ... toute aide serait grandement appréciée!

+0

Avez-vous essayé simplement de définir la [politique du menu contextuel] (http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop)? –

+0

Oui, j'ai aussi essayé cela sans succès ... J'ai juste oublié de l'écrire là-bas ;-) –

+0

S'il vous plaît modifier votre question pour montrer ce que vous avez essayé jusqu'à présent. La définition de la stratégie du menu contextuel du widget Dock sur ['Qt :: PreventContextMenu'] (http://doc.qt.io/qt-5/qt.html#ContextMenuPolicy-enum) fonctionne pour moi. –

Répondre

3

Selon les commentaires, il est nécessaire de définir la stratégie de menu contextuel sur le QDockWidget-Qt::PreventContextMenu ...

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu); 

plutôt que de simplement Qt::NoContextMenu. De la documentationQt::NoContextMenu simplement reporte la gestion du menu contextuel au widget parent plutôt que de l'empêcher entièrement.