【问题标题】:How to disable the context menu of a QDockWidget title bar如何禁用 QDockWidget 标题栏的上下文菜单
【发布时间】:2017-11-19 22:42:34
【问题描述】:

我有几个 QDockWidgets 都不能关闭(使用 Qt 5.6)。因此,右键单击其中一个标题栏时显示的上下文菜单只有禁用条目,我想禁用整个上下文菜单。

我尝试将 contextMenuPolicy 设置为 NoContextMenu,但没有成功。

然后我尝试使用 QDockWidget 的子类,覆盖 ContextMenuEvent 并忽略它。菜单仍然显示。

然后我尝试安装一个事件过滤器来捕捉 ContextMenuEvent,但它没有捕捉到任何东西,只有 PaintEvents、ResizeEvents 等。

我没有想法......任何帮助将不胜感激!

【问题讨论】:

  • 你试过设置context menu policy吗?
  • 是的,我也试过了,但没有成功……我只是忘了把它写在那里;-)
  • 请编辑您的问题以显示您到目前为止所做的尝试。将停靠小部件的上下文菜单策略设置为 Qt::PreventContextMenu 对我有用。
  • 就是这样!我将它设置为 Qt::NoContextMenu,但这不起作用,所以我认为这是不可能的。感谢您的提示!您想将其发布为答案以便我接受吗?

标签: qt contextmenu qdockwidget


【解决方案1】:

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

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu);

而不仅仅是Qt::NoContextMenu。从 documentation Qt::NoContextMenu 开始,只是将上下文菜单处理推迟到父窗口小部件,而不是完全阻止它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多