如何禁用QDockWidget标题栏的上下文菜单
问题描述:
我有几个QDockWidgets都不是closabale(使用Qt 5.6)。因此,右键单击其中一个标题栏时显示的上下文菜单仅禁用了条目,并且我想禁用整个上下文菜单。如何禁用QDockWidget标题栏的上下文菜单
我试图将contextMenuPolicy设置为NoContextMenu,但没有成功。
然后我尝试使用QDockWidget的子类,重写ContextMenuEvent并忽略它。菜单仍然显示。
然后我试图安装一个事件过滤器捕捉到的ContextMenuEvent,但它并没有发现任何,只是PaintEvents,ResizeEvents等
我的想法...任何帮助将不胜感激!
答
按照该意见,有必要设定在上下文菜单政策QDockWidget
到Qt::PreventContextMenu
...
dock_widget->setContextMenuPolicy(Qt::PreventContextMenu);
,而不是简单地Qt::NoContextMenu
。从documentationQt::NoContextMenu
只是将上下文菜单处理推迟到父窗口小部件,而不是完全阻止它。
您是否尝试过设置[上下文菜单策略](http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop)? –
是的,我也尝试过没有成功...我只是忘了写在那里;-) –
请编辑您的问题,以显示你迄今为止尝试过的。将dock部件的上下文菜单策略设置为['Qt :: PreventContextMenu'](http://doc.qt.io/qt-5/qt.html#ContextMenuPolicy-enum)适用于我。 –