Qt:Mac MenuBars很奇怪

时间:2012-02-17 22:04:44

标签: qt

我观察到在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。

我真的很困惑。

  1. 为什么在添加第三个动作之前我没有得到“等等”的顶级菜单项?

  2. 如何以我的应用程序名称强制我的“loginAction”进入第一个顶级菜单?

1 个答案:

答案 0 :(得分:1)