当前位置: 首页 > news >正文

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

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

相关文章:

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

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

jquery 实现倒计时

$(".tableText").click(function () { var time 60; var timer setInterval(function(){ time--; $(".tableText").text("("time"秒)重发"); if(time0){ clearI…...

MYSQL 5.7重置root密码

Mysql 5.7重置root密码 如果您忘记了MySQL 5.7的root密码,可以通过以下步骤重置: 停止MySQL服务。在命令行中输入以下命令: systemctl stop mysqld启动MySQL服务并跳过授权表。在命令行中输入以下命令: mysqld_safe --skip-gra…...

博客永久链接与计数

概述 工欲善其事,必先利其器。 对自己的博客不好用不满意很久了,但是这几年太懒。想趁着放假弄一下吧,发现几年没动,版本升级后很多东西变了,折腾了一下午效果不太理想。先记录一下。 问题 博客链接中有中文&#x…...

基于 RisingWave 和 ScyllaDB 构建事件驱动应用

概览 在构建事件驱动应用时,人们面临着两大挑战:1)低延迟处理大量数据;2)实现流数据的实时摄取和转换。 结合 RisingWave 的流处理功能和 ScyllaDB 的高性能 NoSQL 数据库,可为构建事件驱动应用和数据管道…...

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…...

GRE/MGRE详解

GRE GRE:通用路由封装,是标准的三层隧道技术,是一种点对点的隧道技术; 该技术可以实现不同的网络之间安全的访问; 如上:可以使用该技术搭建一条专线,实现公司A与分公司A1之间相互通信&#xf…...

蓝桥杯(填空题)

十四届 B组 日期统计(暴力枚举) 数据 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1 0 0 9 4 8 0 9 1 2 8 5 0 2 5 3…...

vim快捷指令

Vim是一款强大的文本编辑器,它提供了许多快捷指令来提高编辑效率。以下是一些常用的Vim快捷指令: 移动光标: h 向左移动一个字符j 向下移动一行k 向上移动一行l 向右移动一个字符w 跳到下一个单词的开头b 跳到前一个单词的开头e 跳到当前单词…...

LINUX 下IPTABLES配置详解

-t<表>&#xff1a;指定要操纵的表&#xff1b; -A&#xff1a;向规则链中添加条目&#xff1b; -D&#xff1a;从规则链中删除条目&#xff1b; -i&#xff1a;向规则链中插入条目&#xff1b; -R&#xff1a;替换规则链中的条目&#xff1b; -L&#xff1a;显示规则链中…...

CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)

1、如果确认好就直接激活网卡&#xff01; ifup eth0 2、慢慢找&#xff1a; cd /etc/sysconfig/network-scripts/ ls 找到你的网卡是啥&#xff0c;这里网卡是 ifcfg-eth0 执行1就好了&#xff01;...

【C++】类和对象②(类的默认成员函数:构造函数 | 析构函数)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性及用法 析构函数 概念 析构函数的特性及用法 结语 前言 本篇主要内容&#xff1a;类的6个默认成员函数中的构造函…...

【ZZULIOJ】1063: 最大公约与最小公倍(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 输入两个正整数&#xff0c;输出其最大公约数和最小公倍数。 输入 输入两个正整数n和m&#xff08;n,m<1000000)。输入保证最终结果在int范围内。 输出 输出两个整数&#xff0c;用空格…...

遍历列举俄罗斯方块的所有形状

以前玩俄罗斯方块的时候&#xff0c;就想过一个问题&#xff0c;为什么俄罗斯方块就这7种形状&#xff0c;还有没有别的形状&#xff1f;自己也在纸上画过&#xff0c;比划来比划去&#xff0c;确实就这几种形状。 继续思考一下&#xff0c;那假如是3个块组合的形状&#xff0…...

将Visio绘图导出PDF文件,使其自适应大小,并去掉导入Latex的边框显示

问题描述 将Visio绘图导成pdf文件&#xff0c;首先在Visio绘图如下&#xff1a; 如果直接导出或者另存为pdf文件&#xff0c;则会发现pdf文件是整个页面大小&#xff0c;而不是图片大小。而且在导入latex等排版工具现实时&#xff0c;会显示边框。 问题解决 1.调整Visio中的页…...

android支付宝接入流程

接入前准备 接入APP支付能力前&#xff0c;开发者需要完成以下前置步骤。 本文档展示了如何从零开始&#xff0c;使用支付宝开放平台服务端 SDK 快速接入App支付产品&#xff0c;完成与支付宝对接的部分。 第一步&#xff1a;创建应用并获取APPID 要在您的应用中接入支付宝…...

Mac 下 Python+Selenium 自动上传西瓜视频

背景 研究下 PythonSelenium 自动化测试框架&#xff0c;简单实现 Mac 下自动化批量上传视频西瓜视频并发布&#xff0c;分享给需要的同学&#xff08;未做过多的异常处理&#xff09;。 脚本实现 首先通过手工手机号登录&#xff0c;保存西瓜视频网站的 cookie 文件 之后加载…...

六:ReentrantLock —— 可重入锁

目录 1、ReentrantLock 入门2、ReentrantLock 源码解析2.1、构造方法&#xff1a;默认为非公平锁2.2、三大内部类2.2、lock()&#xff1a;加锁【不可中断锁】2.2.1、acquire() 方法 —— AQS【模板方法】2.2.2.1 tryAcquire() 方法 —— AQS&#xff0c;由子类去实现2.2.2.2. a…...

一种驱动器的功能安全架构介绍

下图提供了驱动器实现安全功能的架构 具有如下特点&#xff1a; 1.通用基于总线或者非总线的架构。可以实现ethercat的FSOE&#xff0c;profinet的profisafe&#xff0c;或者伺服本体安全DIO现实安全功能。 2.基于1oo2D架构&#xff0c;安全等级可以达到sil3。 3.高可用性。单…...

紫光展锐T610平台_4G安卓核心板方案定制开发

紫光展锐T610核心板配备Android 11操作系统&#xff0c;采用12nm制程工艺。该处理器CPU由2颗基于Cortex-A75架构的大核心和6颗基于Cortex-A55架构的小核心组成&#xff0c;最高主频为1.8GHz。GPU采用的是614.4MHz的Mali G52&#xff0c;可以流畅播放2400*1080分辨率视频&#x…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...