产生的问题
在macOS中安装Qt,运行的程序通常与在Windows中不同, 这取决于平台是否使用Native menubar,一些Linux系统中同样存在这种问题
Mac默认的菜单显示在菜单栏,并且默认没有action的menu将不会显示,复用菜单将不按照预先设定的方式排列。
错误显示🙅♂️如下
设计显示如下
解决方案
默认设置是否跟随系统取决于是否显式设置属性,显示设置将覆盖系统的默认选项。
修改
方法一
去main.cpp页面,在main()
函数中插入下列 代码片
.
QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuBar);
此时你的main()
函数看起来应该是这样
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuBar);
MainWindow w;
w.show();
return a.exec();
}
当然,在构造函数中添加以上代码也是可行的,这里介绍的是通法。
方法二
也有一些方法比如
经检验,高版本的Qt中这种方案可能已经不再适用
,建议用方法一
在构造函数中添加以下代码片(有ui)
ui->menubar->setNativeMenuBar(false);
或者(无ui)
menubar->setNativeMenuBar(false);