QMenuBar和QMenu未在Mac OS X中显示

时间:2012-07-07 12:56:27

标签: c++ macos qt qmenu qmenubar

我在 Mac OS X 10.7.4 上使用 Qt 4.7.4 ,而我正在尝试添加QMenuBar和我的申请表QMenu 没有成功。

在查找示例时,我发现Basic Layouts并且Windows上界面的屏幕截图显示了文件菜单,这就是我要做的事情:

enter image description here

但是,在Mac OS X上运行此示例不会在应用程序窗口中显示 File 菜单:

enter image description here

并且它也没有显示在顶级Mac OS X栏中:

enter image description here

似乎这是Mac OS X上的Qt 4.7.4的错误,或者我们需要对源代码进行一些调整以使其在Mac上运行。

如何解决此问题?

我在Stack Overflow上有found similar个帖子,但都没有帮助。

1 个答案:

答案 0 :(得分:5)

代码中没有问题,也没有问题。您引用的示例仅在菜单中创建Exit操作。在OS X上,此类操作属于应用程序菜单,而不属于“文件”菜单。您的应用程序称为qt_menu,这就是应用程序菜单的调用方式,您可以在此处找到Quit操作 - Qt已正确地将其重命名为与Apple的HIG一致。在Windows上,习惯上称它为Exit,在Mac上它的风格很糟糕。 Qt的行为是正确的,我可以重现它。

将其他操作添加到文件菜单,或者只是将一个操作从Exit重命名为其他操作。

请注意,Qt不会根据其名称直接移动操作。 Qt根据他们的名字猜测行动角色。您应该使用QAction::setMenuRole()覆盖此类猜测并明确设置操作角色。然后在各种平台上适当地解释这些角色。