如何使用 Qt 自定义 AppMenu

RuL*_*ViC 6 macos qt menubar qt5

我正在为 macOS 开发 Qt 应用程序。

如何将项目添加到menuApp?我指的是出现在苹果图标右侧菜单栏上的条目。

我怎样才能在 Qt 中实现这一点?

我正在使用 Qt 5.9。Qt 小部件。

menuApp是 Apple 在每个应用程序中默认放置的菜单。在所附的图像中,它对应于一个显示“Finder”的菜单条目:

在此输入图像描述

小智 1

根据菜单角色的 QT 文档,简短的答案是:将menuRoleQMenu 项设置QAction为文档中列出的预定义角色,或常规角色QAction::TextHeuristicRole。有些角色是根据菜单文本自动分配的,但除此之外,您必须自己完成。

您可以通过编程方式执行此操作,也可以使用 ui 编辑器执行此操作。以下是 QT Creator 中 ui 编辑器中的一些图像,正在编辑我的 mainwindow.ui 文件。我有一些通用的“常规”QMenu,它不应该是可见的,在它下面的 QAction 元素是About自动提取的,并放在 menuApp 下,因为它的名称与预定义的角色匹配。对于与任何预定义角色不匹配的“检查更新”QAction,我已手动将其属性设置menuRoleApplicationSpecificRole使其也位于 menuApp 下:

mainwindow.ui 菜单栏显示 QT Creator 中的条目

QT Creator 中的 mainwindow.ui 菜单角色选择

生成的应用程序菜单,其中关于菜单是自动归因的,并且检查更新是手动配置的