2014-09-06 20 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

相關問題