C++ QMenuBar和QMenu不';在Mac OS X中无法显示
我正在Mac OS X 10.7.4上使用Qt 4.7.4,并且我试图向我的应用程序添加C++ QMenuBar和QMenu不';在Mac OS X中无法显示,c++,macos,qt,qmenu,qmenubar,C++,Macos,Qt,Qmenu,Qmenubar,我正在Mac OS X 10.7.4上使用Qt 4.7.4,并且我试图向我的应用程序添加QMenuBar和QMenu,但没有成功 在查找示例时,我发现了,Windows上的界面截图显示了文件菜单,这正是我要做的: 但是在Mac OS X上运行此示例不会在应用程序窗口中显示文件菜单: 而且它也不会显示在Mac OS X的顶部栏中: 这似乎是MacOSX上Qt4.7.4的一个bug,或者我们需要对源代码进行一些调整,使其在Mac上工作 如何解决此问题? 我已经发布了关于堆栈溢出的帖子,但没有任
QMenuBar
和QMenu
,但没有成功
在查找示例时,我发现了,Windows上的界面截图显示了文件菜单,这正是我要做的:
但是在Mac OS X上运行此示例不会在应用程序窗口中显示文件菜单:
而且它也不会显示在Mac OS X的顶部栏中:
这似乎是MacOSX上Qt4.7.4的一个bug,或者我们需要对源代码进行一些调整,使其在Mac上工作
如何解决此问题?
我已经发布了关于堆栈溢出的帖子,但没有任何帮助。代码中没有问题,Qt中也没有问题。您引用的示例仅在菜单中创建一个退出操作。在OSX上,此类操作属于应用程序菜单,而不属于文件菜单。您的应用程序被称为
qt\u menu
,这就是应用程序菜单的调用方式,在这里您可以找到Quit
操作——qt已正确地将其重命名为与苹果的HIG一致的名称。在Windows上,习惯上称之为退出,在Mac上称之为坏风格。Qt的行为是正确的,我可以复制它
将其他操作添加到“文件”菜单,或将一个操作从Exit
重命名为其他操作
请注意,Qt不会直接根据动作的名称移动动作。Qt根据动作角色的名称猜测动作角色。您应该覆盖这些猜测,并使用QAction::setMenuRole()
显式设置动作角色。然后在各种平台上对这些角色进行适当的解释