2014-09-06 44 views
0

某些字符串是否被QAction构造函数区分对待?这很奇怪 - 如果构造函数中的QString以“About”开头,似乎使QAction在菜单中不可见。Qt:如果构造函数字符串以子字符串“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); 

有人能解释这种现象?

+1

尝试与'mFileMenu-> ADDA添加新动作ction(new QAction(tr(“About”)));'而是。 – vahancho 2014-09-06 21:22:06

+0

没有没有父母的字符串的构造函数。但是,对父指针使用0会导致相同的行为。 – daj 2014-09-06 21:31:57

+0

我无法重现这个问题,也不能没有父母。请提供有关该问题的更多详细信息。 – vahancho 2014-09-06 21:37:48

回答

0

如果你是在Mac上有docs记:

的Qt适用于Mac OS X还提供了一个菜单栏合并功能,使 QMenuBar更加符合公认的Mac OS X的菜单栏布局。

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

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

下表列出的字符串寻找并且其中条目是 如果匹配放置:

note

所以动作不反正消失,这被放置在应用程序菜单中的上你可以在下面的例子中看到:

enter image description here

相关问题