0

QAction 构造函数是否对某些字符串进行了不同的处理?这很奇怪——如果构造函数中的 QString 以“About”开头,这似乎使 QAction 在菜单中不可见。

这个片段在 QMainWindow 的子类的方法中:

mFileMenu = new QMenu(tr("&File"), mMenuBar);
mFileMenu->addAction(new QAction(tr("Export &Data"), mFileMenu)); // appears
mFileMenu->addAction(new QAction(tr("About"), mFileMenu)); // doesn't appear
mFileMenu->addAction(new QAction(tr("Abouut"), mFileMenu)); // appears
mFileMenu->addAction(new QAction(tr("Abouto"), mFileMenu)); // doesn't appear
mFileMenu->addAction(new QAction(tr("_About"), mFileMenu)); // appears
menuBar()->addMenu(mFileMenu);

有人可以解释这种行为吗?

4

1 回答 1

0

如果您使用的是 Mac,文档上有一条注释:

Qt for Mac OS X 还提供了菜单栏合并功能,以使 QMenuBar 更接近于接受的 Mac OS X 菜单栏布局。

合并功能基于匹配 QMenu 条目标题的字符串。这些字符串在“QMenuBar”上下文中被翻译(使用QObject::tr())。

如果一个条目被移动,它的插槽仍然会触发,就好像它在原来的位置一样。

下表概述了查找的字符串以及匹配项的放置位置:

笔记

所以该操作无论如何都不会消失,它被放置在应用程序菜单上,如下例所示:

在此处输入图像描述

于 2014-09-07T02:20:43.950 回答