2017-06-17 183 views
2

我有幾個QDockWidgets都不是closabale(使用Qt 5.6)。因此,右鍵單擊其中一個標題欄時顯示的上下文菜單僅禁用了條目,並且我想禁用整個上下文菜單。如何禁用QDockWidget標題欄的上下文菜單

我試圖將contextMenuPolicy設置爲NoContextMenu,但沒有成功。

然後我嘗試使用QDockWidget的子類,重寫ContextMenuEvent並忽略它。菜單仍然顯示。

然後我試圖安裝一個事件過濾器捕捉到的ContextMenuEvent,但它並沒有發現任何,只是PaintEvents,ResizeEvents等

我的想法...任何幫助將不勝感激!

+0

您是否嘗試過設置[上下文菜單策略](http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop)? –

+0

是的,我也嘗試過沒有成功...我只是忘了寫在那裏;-) –

+0

請編輯您的問題,以顯示你迄今爲止嘗試過的。將dock部件的上下文菜單策略設置爲['Qt :: PreventContextMenu'](http://doc.qt.io/qt-5/qt.html#ContextMenuPolicy-enum)適用於我。 –

回答

3

按照該意見,有必要設定在上下文菜單政策QDockWidgetQt::PreventContextMenu ...

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu); 

,而不是簡單地Qt::NoContextMenu。從documentationQt::NoContextMenu只是將上下文菜單處理推遲到父窗口小部件,而不是完全阻止它。