2017-06-17 9 views
2

Ich habe ein paar QDockWidgets, die alle nicht closabale sind (mit Qt 5.6). Daher hat das Kontextmenü, das angezeigt wird, wenn Sie mit der rechten Maustaste auf eine Titelleiste von nur einer von ihnen klicken, deaktivierte Einträge, und ich möchte das gesamte Kontextmenü deaktivieren.So deaktivieren Sie das Kontextmenü einer QDockWidget-Titelleiste

Ich habe versucht, die ContextMenuPolicy zu NoContextMenu ohne Erfolg festzulegen.

Ich habe dann versucht, eine Unterklasse von QDockWidget zu verwenden, überschreiben das ContextMenuEvent und ignorieren es. Das Menü wird weiterhin angezeigt.

Ich habe dann versucht, einen Ereignisfilter zu installieren, um die ContextMenuEvent zu fangen, aber es hat jede nicht zu fangen, nur PaintEvents, ResizeEvents usw.

ich aus Ideen bin ... jede mögliche Hilfe wäre sehr dankbar!

+0

Haben Sie versucht, nur die Einstellung [Kontextmenü-Richtlinie] (http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop)? –

+0

Ja, das habe ich auch ohne Erfolg versucht ... Ich habe nur vergessen es aufzuschreiben ;-) –

+0

Bitte editiere deine Frage um zu zeigen, was du bisher probiert hast. Das Festlegen der Kontextmenü-Richtlinie des Dock-Widgets zu ['Qt :: PreventContextMenu'] (http://doc.qt.io/qt-5/qt.html#ContextMenuPolicy-enum) funktioniert für mich. –

Antwort

3

sich nach den Kommentaren ist es notwendig, das Kontextmenü Politik auf die QDockWidget-Qt::PreventContextMenu ...

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu); 

anstatt einfach Qt::NoContextMenu einzustellen. Von der documentationQt::NoContextMenu einfach die Handhabung des Kontextmenüs auf das übergeordnete Widget, anstatt es vollständig zu verhindern.

Verwandte Themen