如何禁用QDockWidget标题栏的上下文菜单

6
我有几个QDockWidgets,它们都无法关闭(使用Qt 5.6)。因此,当右键单击其中一个标题栏时显示的上下文菜单只有禁用条目,我希望禁用整个上下文菜单。
我尝试将contextMenuPolicy设置为NoContextMenu但没有成功。
然后我尝试使用QDockWidget的子类,覆盖ContextMenuEvent并忽略它。菜单仍然显示。
然后我尝试安装事件过滤器来捕获ContextMenuEvent,但它没有捕获任何事件,只有PaintEvents、ResizeEvents等。
我没有更多想法...非常感谢您的帮助!

你尝试过设置上下文菜单策略吗? - G.M.
是的,我也尝试过这个,但没有成功...我只是忘记写在那里了;-) - Tobias Leupold
请编辑您的问题以显示您已经尝试过什么。将停靠窗口小部件的上下文菜单策略设置为[Qt :: PreventContextMenu](http://doc.qt.io/qt-5/qt.html# ContextMenuPolicy-enum) 对我很有效。 - G.M.
就是这样!我将它设置为Qt :: NoContextMenu,但没有起作用,所以我认为这种方式不可能实现。谢谢提示!你想把它发表为答案,这样我就可以接受它吗? - Tobias Leupold
1个回答

12

根据评论,有必要将QDockWidget的上下文菜单策略设置为Qt::PreventContextMenu...

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu);

与其仅使用 Qt::NoContextMenu,不如参考文档,该枚举值仅将上下文菜单处理委托给父窗口小部件而非完全阻止它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接