Qt:Mac 菜单栏的怪异之处

Posted

技术标签:

【中文标题】Qt:Mac 菜单栏的怪异之处【英文标题】:Qt: Weirdness with Mac MenuBars 【发布时间】:2012-02-17 22:04:44 【问题描述】:

关于在 OSX Lion 上运行的 Qt 4.7.4,我观察到一种奇怪的行为。

我希望我的应用程序对所有窗口都有一个菜单栏。所以,我的应用程序保存并初始化了一个 QMenuBar 对象:

this->macMenuBar = new QMenuBar(0);

当我运行我的应用程序时,我会在菜单栏上看到我的应用程序的名称,就在苹果标志的右边,还有一些默认选项,如退出、服务-> 等...

我想在此菜单中添加两个新选项(在我的应用程序名称下)。所以我尝试在 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。

我真的很困惑。

    为什么在添加第三个操作之前我没有得到“blah blah”***菜单项?

    如何强制我的“loginAction”进入我的应用程序名称下的第一个***菜单?

【问题讨论】:

【参考方案1】:

Qt 论坛中解决的问题:http://developer.qt.nokia.com/forums/viewthread/14610/

【讨论】:

那个论坛已经消失了,如果你在这里分享解决方案会很棒。

以上是关于Qt:Mac 菜单栏的怪异之处的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 应用程序菜单栏的主菜单中添加和本地化菜单项

原生 Mac 菜单栏的国际化

Python Qt GUI设计:菜单栏工具栏和状态栏的使用方法(拓展篇—2)

Python Qt GUI设计:菜单栏工具栏和状态栏的使用方法(拓展篇—2)

带有菜单栏的 QT HTML5 像真正的程序

NSWindow 在每个应用程序的前面和菜单栏的前面 Objective-c Mac