如何禁用 QDockWidget 标题栏的上下文菜单
How to disable the context menu of a QDockWidget title bar
我有几个 QDockWidgets,它们都不是 closabale(使用 Qt 5.6)。因此,当right-clicking其中一个标题栏只有禁用条目时显示的上下文菜单,我想禁用整个上下文菜单。
我尝试将 contextMenuPolicy 设置为 NoContextMenu 但没有成功。
然后我尝试使用 QDockWidget 的子类,覆盖 ContextMenuEvent 并忽略它。菜单仍然显示。
然后我尝试安装一个事件过滤器来捕捉 ContextMenuEvent,但它没有捕捉到任何事件,只有 PaintEvents、ResizeEvents 等。
我没有想法……任何帮助将不胜感激!
根据评论,有必要将 QDockWidget
上的上下文菜单策略设置为 Qt::PreventContextMenu
...
dock_widget->setContextMenuPolicy(Qt::PreventContextMenu);
而不是简单地 Qt::NoContextMenu
。从 documentation Qt::NoContextMenu
只是将上下文菜单处理推迟到父小部件,而不是完全阻止它。
我有几个 QDockWidgets,它们都不是 closabale(使用 Qt 5.6)。因此,当right-clicking其中一个标题栏只有禁用条目时显示的上下文菜单,我想禁用整个上下文菜单。
我尝试将 contextMenuPolicy 设置为 NoContextMenu 但没有成功。
然后我尝试使用 QDockWidget 的子类,覆盖 ContextMenuEvent 并忽略它。菜单仍然显示。
然后我尝试安装一个事件过滤器来捕捉 ContextMenuEvent,但它没有捕捉到任何事件,只有 PaintEvents、ResizeEvents 等。
我没有想法……任何帮助将不胜感激!
根据评论,有必要将 QDockWidget
上的上下文菜单策略设置为 Qt::PreventContextMenu
...
dock_widget->setContextMenuPolicy(Qt::PreventContextMenu);
而不是简单地 Qt::NoContextMenu
。从 documentation Qt::NoContextMenu
只是将上下文菜单处理推迟到父小部件,而不是完全阻止它。