首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我必须在QT5.1中手动指定QAction::MenuRole?

为什么我必须在QT5.1中手动指定QAction::MenuRole?
EN

Stack Overflow用户
提问于 2013-08-24 02:11:09
回答 1查看 861关注 0票数 1

在Qt 4.8中,我有以下代码:

代码语言:javascript
复制
    QMenuBar *menu_bar = menuBar(); //of my QMainWindow
    QMenu *help_menu = menu_bar->addMenu(tr("&Help"));
    QAction *about_qt_action = help_menu->addAction(tr("About &Qt"));
    connect(about_qt_action, SIGNAL(triggered()), qApp, SLOT(aboutQt()));

仅这一点就足以让Qt自动将About Qt菜单项移动到OSX10.8下的应用程序菜单(可能还有其他版本)。

现在,使用Qt5.1,我的关于Qt的条目最终出现在“帮助”菜单中,我必须手动设置MenuRole以返回旧的行为:

代码语言:javascript
复制
    about_qt_action->setMenuRole(QAction::AboutQtRole);

然而,文献资料说:

默认情况下,所有操作都有TextHeuristicRole,这意味着操作是根据其文本添加的(有关更多信息,请参见QMenuBar )。

和:

还提供了一个菜单栏合并功能,使QMenuBar更加符合公认的Mac菜单栏布局。合并功能基于与QMenu条目标题匹配的字符串。这些字符串在"QMenuBar“上下文中被翻译(使用QObject::tr())。如果一个条目被移动,它的插槽仍然会被触发,就像它在原来的位置一样。下表概述了查找的字符串以及如果匹配的话条目放置的位置:

..。这张桌子显示移动到应用程序菜单的菜单的about.*。我的应用程序名为Yua,以相同方式制作的“关于Yua”的QAction也不会移动,除非我手动设置MenuRole。在我的CFBundleName中有一个CFBundleDisplayName和一个Info.plist条目。我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-09-03 20:58:46

我根本就不依赖于启发式角色。他们是IMHO的一个相当拙劣的特点。您应该手动设置所有具有非默认角色的菜单操作的菜单角色。非那样做不行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18414227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档