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移除了,所以有此问题。目前还没有解决方案,知道的朋友可以留言分享!

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高校科研前沿】青藏高原所李新研究员为第一作者在REV GEOPHYS发表长篇综述:陆面数据同化–陆面过程研究中理论与数据的和弦

1.文章简介 论文名称:Land Data Assimilation: Harmoni-zing Theory and Data in Land Surface Process Studies 第一作者及通讯作者:李新研究员(兼通讯作者) 第一作者及通讯作者单位:中国科学院青藏高原研…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中,关键词布局是一个至关重要的环节。首先,我们需要确定核心关键词,然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后,接下来的任务就是对这些扩展后的关键词进行筛选。那么,如何进行有效的…

模型训练基本概念-赛博炼丹

文章目录 拓展知识基础名词解释(语义库更新)机器学习任务流程模型训练基本流程模型训练详细流程正向传播与反向传播正向传播-求误差值反向传播-求参数值 学习率激活函数激活函数-为什么希望激活函数输出均值为0?激活函数 — softmax & ta…

机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10

Day 10 Genaral GUidance training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade off cross Validation how to split? N-fold Cross Validation mismatch 这节课总体听下来比较…

使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API

Vercel部署FreeGPT35有严重限制,玩玩就好,真用还是得docker。 限制原因: Vercel的流式响应并不是一开始写流,客户端就能立刻收到响应流,而是先写到一个缓冲区,当流关闭才一股脑的流式响应回来(不是实时流) 因此导致: …

VideoGPT:Video Generation using VQ-VAE and Transformers

1.introduction 对于视频展示,选择哪种模型比较好?基于似然->transformers自回归。在没有空间和时间溶于的降维潜在空间中进行自回归建模是否优于在所有空间和时间像素级别上的建模?选择前者:自然图像和视频包括了大量的空间和…

【八股】AOP

AOP(Aspect Oriented Programming),面向切面编程,他是一种编程范式。 作用: 在不改变原始设计的的基础上对其进行功能增强。 几个基本概念: 连接点:所有的方法 切入点:追加功能的方法 通知:追加…

组合逻辑电路( Combinational Logic Circuit)知识点总结

目录 一、组合逻辑电路的基本设计方法 1.特点 2.逻辑功能的描述 3.组合逻辑电路的分析步骤 4.组合逻辑电路的设计方法 二、编码器的逻辑电路 1.普通编码器 2.优先编码器 三、二进制和二-十进制译码器 1.3-8译码器 2.二-十进制译码器 3.应用:逻辑函数发生…

基于GRU实现评论文本情感分析

一、问题建模 在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐、智能搜索、产品反馈、业务安全等。此博文,共包含6大类20个细粒度要素的情感倾…

【PDF.js】PDF文件预览

【PDF.js】PDF文件预览 一、PDF.js二、PDF.js 下载1、下载PDF.js2、在项目中引入3、屏蔽跨域错误 三、项目中使用四、说明五、实现效果 使用PDFJS实现pdf文件的预览,支持预览指定页、关键词搜索、缩略图、页面尺寸调整等等。 一、PDF.js 官方地址 文档地址 二、PD…

FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现

导语 今天继续康奈尔大学FPGA课程ECE 5760的典型案例分享——基于DE1-SOC的String Art实现。 (更多其他案例请参考网站: Final Projects ECE 5760) 1. 项目概述 项目网址 ECE 5760 Final Project 项目说明 String Art起源于19世纪的数学…

高精度地图导航论文汇总

文章目录 2022基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 2023一种无人驾驶融合决策方案的设计与实现[M] 2022 基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 摘要: 随着计算机及通信技术的不断进步,汽车行业也得到了飞速的发展。汽车在…

InternVideo2重塑视频理解新标杆,多模态学习引领行业风向

引言:视频理解的新篇章——InternVideo2的介绍 随着视频内容在日常生活中的普及,视频理解技术的重要性日益凸显。视频不仅包含丰富的视觉信息,还蕴含着动态变化和多模态元素,如音频和文本。这些特性使得视频成为一个复杂的数据类型…

LeetCode Meditations:合并 K 排序列表

描述 合并K分类列表 状态: 您有一系列 k 链接-列表 lists ,每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如: Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanatio…

4.5 文字绘制

PutText 函数在图像中呈现指定的文本字符串。不能使用指定字体呈现的符号将由问号替换。 void cv::putText ( cv::Mat & img,//待绘制的图像 const String & text,//待绘制的文字 Point org,//文本框的左下角 int fontFace,//字体类型 double fontScale,//尺寸因…

虹科Pico汽车示波器 | 免拆诊断案例 | 2011款东风悦达起亚K5车发动机偶尔起动困难

一、故障现象 一辆2011款东风悦达起亚K5车,搭载G4KD发动机,累计行驶里程约为24.5万km。车主反映,第1次起动发动机时偶尔无法起动着机,第2次能够正常起动着机,但发动机故障灯异常点亮。为此在其他维修厂维修过&#xf…

网站HTTP升级成为HTTPS的方法

将网站从HTTP免费升级为HTTPS,您可以按照以下步骤操作: 1. 选择证书颁发机构(CA): - 为了免费升级,您可以选择使用JoySSL这样的公益项目。JoySSL提供免费、自动化的SSL/TLS证书颁发服务,适用于各…

【linux】yum 和 vim

yum 和 vim 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 查看软件包1.3 如何安装软件1.4 如何卸载软件1.5 关于 rzsz 2. Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 vim命令模式命令集2.4 vim底行模式命令集2.5 vim操作总结补充:vim下批量化注释…

FFmpeg: 简易ijkplayer播放器实现--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发,实现基本的功能,开发软件为Qt 项目优势: 参考ijkplayer播放器,实现UI界面和播放器核心进行解耦,容易添加其他功能…

ELK企业日志分析系统介绍

前言 随着企业级应用系统日益复杂,随之产生的海量日志数据。传统的日志管理和分析手段,难以做到高效检索、实时监控以及深度挖掘潜在价值。在此背景下,ELK日志分析系统应运而生。本文将从ELK 日志分析系统的原理、架构及其在实践中的应用做相…