2012-07-07 101 views
2

我使用Qt的4.7.4的Mac OS X 10.7.4,并我想一个QMenuBarQMenu添加到我的申请没有成功。QMenuBar和QMenu没有在Mac OS X显示

当寻找例子,我发现Basic Layouts和Windows界面的屏幕截图显示文件菜单,这是我想要做的事:

enter image description here

然而 ,在Mac OS X上运行此示例不会在应用程序窗口中显示文件菜单:

enter image description here

而且它也不会在顶级的Mac OS X栏显示:

enter image description here

看来,这是任何的Qt 4.7.4的Mac OS X上的错误,或要求我们对源代码进行一些调整以使其可以在Mac上运行。

我该如何解决这个问题?

我有found similar职位堆栈溢出,但没有帮助。

回答

5

代码没有问题,在Qt中也没有问题。您引用的示例只会在菜单中创建一个Exit操作。在OS X上,这些操作属于应用程序菜单,而不在文件菜单中。你的应用程序被称为qt_menu,这就是应用程序菜单的调用方式,这就是你会发现Quit动作的地方--Qt已经正确地重命名为与Apple的HIG一致。在Windows上,习惯称它为Exit,在Mac上这是糟糕的风格。 Qt的行为是正确的,我可以重现它。

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

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