禁用主窗口的标题上下文菜单

Posted

技术标签:

【中文标题】禁用主窗口的标题上下文菜单【英文标题】:Disable main window's title context menu 【发布时间】:2012-02-28 14:21:19 【问题描述】:

我正在嵌入式 Linux 上使用 Qt、C++ 开发一个窗口应用程序。使用 QApplication::GUIServer 的 QApplication 类型

我正在尝试禁用当用户右键单击应用程序标题区域时弹出的上下文菜单,该菜单提供了调整应用程序大小、移动、关闭等选项的选项。

我已经尝试在主窗口上将 ContextMenuPolicy 设置为 PreventContextMenu 并为主窗口提供自定义上下文菜单处理程序。

提前致谢。

【问题讨论】:

【参考方案1】:

您可能无法禁用此菜单,因为它是由窗口管理器而非应用程序提供的。

唯一的选择可能是使用windowFlags 请求删除标题栏。

【讨论】:

我用一个重要的细节更新了我的问题,它是嵌入式 linux,窗口由 QApplication::GUIServer 类型的 QApplication 管理。我想这与我的解决方案有关,我将搜索引向了这个方向。 我需要标题。我想我要删除实际的标题,然后放一个带有标签的假标题。【参考方案2】:

这是一个系统菜单,通常由您的 Windows 管理器处理。 QT 所能做的就是提示窗口管理器启用/禁用它的一些功能。

您应该检查QWidget::setWindowFlags ( Qt::WindowFlags type ),也许是Qt::WindowSystemMenuHint 标志。

【讨论】:

【参考方案3】:

试试这个:setWindowFlags(Qt::FramelessWindowHint | Qt::WindowTitleHint);

【讨论】:

以上是关于禁用主窗口的标题上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

WindowChrome - 如何修改或禁用标题栏中的上下文菜单?

SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?

WPF Datagrid行上下文菜单-禁用菜单项[关闭]

长按禁用 iPad / Safari 上下文菜单

如何禁用 TWebBrowser 上下文菜单?

在 Android 上长按时禁用上下文菜单