MacOS下Qt 5开发环境安装与配置

最近笔者在MacOS中使用Qt Creator开发Qt程序时遇到了一些问题,在网上查了不少资料,都没有找到解决方案,只有自己进行研究摸索了,今天晚上终于将目前遇到的问题全部解决了,特记录下来分享给大家。

笔者使用的是MacOS 10.13.6和MacOS 10.15.7,前者为MBP笔记本,后者为虚拟机。笔者之前在虚拟机中安装过Qt5.14.2,在使用过程中并没出现最近遇到的问题,但最近在MBP笔记本中安装Qt5.14.2却出现了以下问题:

  1. Qt Creator界面设计器中的菜单不显示
  2. Qt菜单在MacOS中不显示
  3. 使用CMake构建系统时,智能提示有问题,Qt Creator中不能跳转打开Qt的头文件,报警告:
    Warning: The code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.

在这里插入图片描述
点“Show Details”按钮可以看到一些错误,比如:

error: 'QtWidgets/qtwidgetsglobal.h' file not found

在这里插入图片描述
下面笔者就从MacOS下的Qt 5开发环境的安装与配置开始介绍,然后再介绍如何解决上述问题。

一、下载Qt安装包

MacOS版本下载 qt-opensource-mac-x64-5.14.2.dmg
在这里插入图片描述

二、安装

1. 安装Xcode

在安装Qt之前,需要先安装Xcode,如果已经安装好了Xcode.app,则使用下面命令选择Xcode

$ sudo xcode-select --switch /Applications/Xcode.app

可以使用下面命令查看选择的Xcode

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

如果没有安装过Xcode.app,则可以使用下面的命令安装Xcode命令行工具

xcode-select --install

2. 安装Qt

安装时需要登录Qt账号,如果不想登录,可以在安装前断开网络链接,则安装程序会自动跳过登录进行安装。

在这里插入图片描述
默认会安装在用户目录下的Qt5.14.2中,也可以更改目录。

在选择安装组件的时候,可以根据需要进行选择:

在这里插入图片描述

笔者的MBP笔记本磁盘空间不大,所以仅选择了如下几项,需要1.44G的空间。

在这里插入图片描述

安装好后就可以运行Qt Creator了

在这里插入图片描述

三、创建项目

1.选择Qt Widgets Application

在这里插入图片描述

2. 选择CMake构建系统

在这里插入图片描述

3. 选择类信息

在这里插入图片描述

4. 选择翻译文件及语言

注意:这步非常重要,默认的情况下是没有语言,如果想要编写中文界面一定要选择中文,否则就会遇到中文菜单不能显示的问题

在这里插入图片描述

5. 选择Qt包

在这里插入图片描述

6. 选择版本控制系统

在Summary页可以选择版本控制系统,也可以保持默认,不选择

在这里插入图片描述

四、出现问题、解决问题

前面创建好项目后,就可以进行项目开发,不过笔者遇到了前述问题,下面一个一个来解决:

1. Qt Creator界面设计器中的菜单不显示

在这里插入图片描述

菜单中应该是文件的,但是在界面设计器中显示不出来,而且菜单设计栏最右边出现了一个双箭头按钮,这是因为菜单的默认字体太大了,笔者的默认为14号字体。

在这里插入图片描述

在属性中将menubar的字体设置小点,比如12号,就可以正常显示了:

在这里插入图片描述

2. Qt菜单在MacOS中不显示

前面我们在界面设计器中将菜单的字号设置成12号后,界面设计器中可以正常显示了,但是运行后,看不到菜单:

在这里插入图片描述

这是因为菜单项的文本是英文,也没有响应事件。需要将菜单项设置成中文(前面创建项目时需要选择翻译文件及语言为中文)

在这里插入图片描述

再将退出的响应事件添加上:

在这里插入图片描述

在这里插入图片描述

再次运行就要以看到菜单了:

在这里插入图片描述

关于此问题,网上很多资料都是说将menubarnativeMenuBar开关关掉:

在这里插入图片描述

虽然可以,但是并非MacOS的习惯。运行效果如下:

在这里插入图片描述

3. Warning: The code model could not parse an included file

报警告:
Warning: The code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.

智能提示不能正常工作,Qt Creator中不能跳转打开Qt头文件,Code Model在解析源码时报:
Lexical or Preprocessor Issue
error: 'QtCore/QVariant' file not found
error: 'QtWidgets/QAction' file not found
error: 'QtWidgets/QApplication' file not found
error: 'QtWidgets/QMainWindow' file not found
error: 'QtWidgets/QMenu' file not found
error: 'QtWidgets/QMenuBar' file not found

在这里插入图片描述

笔者在虚拟的MacOS 10.15.7中是没有出现,但在MBP中却出现了,笔者查过一些资料,网上很多的解决方案是不加载ClangCodeModel插件:

在这里插入图片描述

这就是一种掩耳盗铃的做法,让Qt Creator不再报警告,但是智能提示也不能正常工作,严重影响编码。

笔者想过编译器版本的问题,MacOS 10.13Clang 9

$ clang -v
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix

MacOS 10.15clang 12:

$ clang -v
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

但是编译运行都没问题,只是智能提示有问题。智能提示是使用的libclang或者clangd,都是基于clang的,肯定就是ClangCodeModel未能正确使用编译器在编译时的配置导致的。

对比查看Code Model相关信息:

在这里插入图片描述

没问题的Code Mode信息如下所示:

在这里插入图片描述

有问题的Code Mode如下所示:

在这里插入图片描述

通过对比,可以看到没问题的有多个FrameworkPath项,其中有指向Qt安装路径的(~/Qt5.14.2/5.14.2/clang_64/lib),而有问题的却没有,所以QT的头文件都会找不到:在这里插入图片描述

在MacOS中,Qt安装后的是以framework的形式存在的:

在这里插入图片描述

其中的头文件路径中并没有QtCoreQtWidgets这样的目录:

在这里插入图片描述

所以在MacOS中需要向编译器指定参数-iframework,这样编译器就可以自动搜索头文件路径了:

在这里插入图片描述

Qt CreatorCode Model信息是无法手动修改的,只能查看。它是通过Qmake或者CMake构建系统生成的信息来解析的。qmake没问题,那就很有可能是CMake的问题了。

再次对比CMake的版本,发现没问题的是CMake 3.25.1,而有问题的则是新版本3.28.1,我回退CMake版本到3.25.1版本,问题解决!更新到目前最新的3.29.1,依旧有问题。所以在新版本未解决之前,还是继续使用老版本吧!

当然这也许不是CMake的问题,而是CMake由于版本的升级,可能一些输出发生了变化,而Qt Creator版本比较老了,不支持新版本了。感兴趣的读者可以继续深究!

目前MacOS 10.15.7版本使用Qt 5.14.2开发就只有下面这个问题了:

Unable to create basic Accelerated OpenGL renderer.
Unable to create basic Accelerated OpenGL renderer.
Core Image is now using the software OpenGL renderer. This will be slow.

在这里插入图片描述

查资料说是由于Apple10.14开始把OpenGLAPI移除了,所以有此问题。目前还没有解决方案,知道的朋友可以留言分享!

如果此文对你有帮助,欢迎点赞收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539906.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于小程序实现的医院预约挂号系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

C++ | Leetcode C++题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int n nums.size();if (n 0) {return 0;}int fast 1, slow 1;while (fast < n) {if (nums[fast] ! nums[fast - 1]) {nums[slow] nums[fast];slow;}f…

【MYSQL】MySQL整体结构

无论你是前端还是后端&#xff0c;只要是一个合格的开发者&#xff0c;对于MySQL这个名词相信都不陌生&#xff0c;MySQL逐渐成为了最受欢迎的关系型数据库&#xff0c;无论你是大前端&#xff0c;亦或是Java、Go、Python、C/C、PHP....等这些语言的程序员&#xff0c;对于MySQ…

大数据入门之如何利用Phoenix访问Hbase

在大数据的世界里&#xff0c;HBase和Phoenix可谓是一对黄金搭档。HBase以其高效的列式存储和强大的数据扩展能力&#xff0c;成为大数据存储领域的佼佼者&#xff1b;而Phoenix则以其SQL化的操作方式&#xff0c;简化了对HBase的访问过程。今天&#xff0c;就让我们一起看看如…

是时候开启Copilot下一篇章:Microsoft AI

微软总裁兼首席执行官萨提亚纳德拉欢迎 Mustafa Suleyman 和 Karn Simonyan 加入微软公司&#xff0c;领导一个新成立的部门 —— Microsoft AI&#xff0c;旨在开发 Copilot 和其他的面向消费者的 AI 产品和研究。 Mustafa Suleyman 将担任 Microsoft AI 执行副总裁&#xf…

Freecad参数化三维建模的趋势——水利水电设计

最近以chatgpt3.5彻底放开和Kimi小程序如此方便使用而火爆。 三维参数化模型是一个趋势&#xff0c;特别对于这些常规的建筑物设计&#xff0c;基本极少各种曲线曲面&#xff0c;所以特别适合做参数化。 而水利水电工程上应用的设备和产品&#xff0c;也可以建立参数化库&…

展厅装修设计中合理的使用颜色

一、选择合适的主题是最重要的一点 一个引人注目的主题可以立即吸引到游客的注意力&#xff0c;成功的将展厅的主题和产品联系在一起。这个主题应该是与你的产品或服务密切相关的&#xff0c;同时又足够具有吸引力&#xff0c;以吸引消费者对你的展厅产生好奇心。 二、合理的使…

动态规划——记忆化搜索DP

以901. 滑雪 - AcWing题库为例 记忆化搜索和DFS&#xff1a; DFS&#xff1a;在某个方向上滑雪滑倒不能滑为止&#xff0c;然后再回溯继续滑&#xff0c;直到以所有点为起始点全部遍历完 记忆化搜索&#xff1a;用f[i,j]记录&#xff0c;以某点开始滑的最大路径&#xff0c;保证…

【YUNBEE云贝-进阶课】MySQL8.0性能优化实战培训

众多已经学习过MySQL 8.0 OCP认证专家的课程的同学们对 MySQL 8.0 的安装部署、体系结构、配置监控、用户管理、主从复制、系统运维、MGR等基础操作和动手实验有了一定的学习基础.很多学员反馈希望更进一步提升技术能力、解决工作中碰到的性能问题。 针对MySQL8.0的数据库性能优…

JetBrains PhpStorm 2024.1 发布 - 高效智能的 PHP IDE

JetBrains PhpStorm 2024.1 发布 - 高效智能的 PHP IDE 请访问原文链接&#xff1a;JetBrains PhpStorm 2024.1 (macOS, Linux, Windows) - 高效智能的 PHP IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org JetBrains PhpSt…

构建智能连接的未来:物联网平台系统架构解析

随着科技的不断进步和互联网的普及&#xff0c;物联网&#xff08;Internet of Things, IoT&#xff09;已成为连接世界的新方式。物联网平台作为实现物联网应用的核心基础设施&#xff0c;其系统架构的设计和实施至关重要。本文将深入探讨物联网平台系统架构的关键要素和最佳实…

建造者模式:构造复杂对象的艺术

在面向对象的设计中&#xff0c;建造者模式是一种重要的创建型设计模式&#xff0c;专门用来构建复杂的对象。它主要目的是将对象的构造代码与其表示代码分离&#xff0c;使同样的构建过程可以创建不同的表示。本文将详细介绍建造者模式的定义、实现、应用场景以及优缺点&#…

EasyConnect初始化失败如何解决?

使用EasyConnect for mac的用户是不是会经常出现这样的提示&#xff1a;“初始化失败&#xff0c;请尝试重新安 装”&#xff1f; 重新下载安装后&#xff0c;第一次使用是没有问题的&#xff0c;但是第二次使用还是会出现这样的情况。 那么怎么一劳永逸地解决这个问题呢&am…

FluentUI系列 - 1 - 介绍第一个窗口

介绍一个QML的UI库&#xff0c;国人编写&#xff0c;作者也耍知乎。这个UI库确实好用&#xff0c;但是教程基本等于无&#xff0c;个人在使用中顺便记录一下学习内容。这玩意儿也有Pyside6的版本&#xff0c;有需要的可以查看PySide6-FluentUI-QML。 FluentUI库地址​github.c…

SpringMVC--02--上下文工具类(RequestContextHolder)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 RequestContextHolder背景1.RequestContextHolder的使用2.request和response怎么和当前请求挂钩?3.request和response等是什么时候设置进去的? 案例应用---用户信…

softmax回归:多分类问题的解码器

随着人工智能技术的不断发展&#xff0c;分类问题在机器学习领域中的地位日益凸显。在众多分类算法中&#xff0c;softmax回归以其独特的优势和广泛的应用场景&#xff0c;成为了处理多分类问题的有力工具。本文将深入探讨softmax回归的原理、应用及其优缺点&#xff0c;以期为…

【好用】推荐10套后端管理系统前端模板

后台管理系统前端模板是开发者在构建后台管理系统时使用的一种工具&#xff0c;它提供了预先设计好的界面和组件&#xff0c;以帮助开发者快速搭建出功能完善、用户体验良好的管理系统。以下是V哥整理的10款流行的后台管理系统前端模板&#xff0c;它们基于不同的技术栈和设计理…

找出mongodb的jumbo块并进行分裂

https://www.cnblogs.com/abclife/p/15968628.html 根据这篇文档中的脚本&#xff0c;在我们自己的环境中跑了下&#xff0c;第一次跑的结果如下&#xff1a; 运行完上面跑出的split脚本后&#xff0c;还是存在jumbo块&#xff0c;第二次跑出的结果&#xff1a; 从上面结果可以…

【Vue3进阶】- 第2学堂小商城项目后端准备和接口文档

简介 在大多数前端项目开发中&#xff0c;都需要与后端进行接口交互&#xff0c;后端通常会以文档的形式提供接口信息&#xff0c;前端开发者通过阅读这些文档&#xff0c;了解后端接口的功能和使用方法&#xff0c;从而实现数据的获取和提交等功能。 第二学堂小商城教程后端…

古月·ROS2入门21讲——学习笔记

第一讲&#xff1a;ROS/ROS2是什么 1. ROS的诞生 对于越来越复杂的智能机器人系统&#xff0c;已经不是一个人或者一个团队可以独立完成的&#xff0c;如何高效开发机器人&#xff0c;是技术层面上非常重要的一个问题&#xff0c;针对这个问题&#xff0c;一群斯坦福大学的有…