Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QMenuBar和QMenu不';在Mac OS X中无法显示_C++_Macos_Qt_Qmenu_Qmenubar - Fatal编程技术网

C++ QMenuBar和QMenu不';在Mac OS X中无法显示

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上工作 如何解决此问题? 我已经发布了关于堆栈溢出的帖子,但没有任

我正在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上工作

如何解决此问题?


我已经发布了关于堆栈溢出的帖子,但没有任何帮助。

代码中没有问题,Qt中也没有问题。您引用的示例仅在菜单中创建一个退出操作。在OSX上,此类操作属于应用程序菜单,而不属于文件菜单。您的应用程序被称为
qt\u menu
,这就是应用程序菜单的调用方式,在这里您可以找到
Quit
操作——qt已正确地将其重命名为与苹果的HIG一致的名称。在Windows上,习惯上称之为退出,在Mac上称之为坏风格。Qt的行为是正确的,我可以复制它

将其他操作添加到“文件”菜单,或将一个操作从
Exit
重命名为其他操作

请注意,Qt不会直接根据动作的名称移动动作。Qt根据动作角色的名称猜测动作角色。您应该覆盖这些猜测,并使用
QAction::setMenuRole()
显式设置动作角色。然后在各种平台上对这些角色进行适当的解释