我观察到在OSX Lion上运行的Qt 4.7.4有一个奇怪的行为。
我希望我的应用程序为所有窗口都有一个菜单栏。所以,我的应用程序保存并初始化一个QMenuBar对象:
this->macMenuBar = new QMenuBar(0);
当我运行我的应用程序时,我在菜单栏上看到了我的应用程序名称,右侧是苹果徽标,有一些默认选项,如Quit,Services->等...
我想在此菜单中添加两个新选项(在我的应用程序名称下)。所以我尝试在QApplication的构造函数中执行此操作。
this->macMenuBar->addAction(configurationAction);
this->macMenuBar->addAction(aboutMyAppAction);
对菜单没有任何影响。虽然两个操作都有效并且在停靠栏图标菜单中有效,但它不会显示我的项目。
然后,我决定一些根本没有意义的东西,但是部分工作。
QMenu * menu = this->macMenuBar->addMenu(("blah blah"));
menu->addAction(configurationAction);
menu->addAction(aboutMyApp);
现在我的两个动作,“配置”和“关于”将显示,并且没有任何名为“blah blah”的菜单项的痕迹,在这些菜单项下应该出现这些动作!
现在我决定添加另一行:
menu->addAction(loginAction);
那我现在得到什么?我的应用程序名称菜单项下面的菜单中有“preferences”和“about”,右边是一个名为“blah blah”的新子菜单,只有一个项目,我的loginAction。
我真的很困惑。
为什么在添加第三个动作之前我没有得到“等等”的顶级菜单项?
如何以我的应用程序名称强制我的“loginAction”进入第一个顶级菜单?