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

认识QT以及QT的环境搭建

认识QT

什么是QT?

Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架

 

认识客户端 

现在我们所说的客户端开发其实大致分为三种:
1.网页前端开发。

2.桌面应用开发(电脑的应用层序)

3.移动应用开发。

而我们的QT的主战场就是在桌面开发客户端的,虽然现在的QT已经支持了在安卓上进行客户端开发,但是目前很少有商业公司这么做。

 

 同时,我们的客户端和用户交互的界面又可以分为两种:
1.命令行式的/终端界面 (就是那种黑框框) 比如 gcc,gdb这种,这种客户端称为TUI。

TUI一般是给程序员用的。

2.带有图形化界面的客户端,这种就不必多解释了,这种就称为GUI。

而我们的QT是编写GUI的其中一种解决方案,并且非常流行。

 

QT支持的平台 

Windows ‒ XP、Vista、Win7、Win8、Win2008、Win10 

Unix/X11 ‒ Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、
BSD/OS、和其他很多 X11 平台
Macintosh ‒ Mac OS X
Embedded ‒ 有帧缓冲⽀持的嵌⼊式 Linux 平台,Windows CE
Android

 

QT之所以能这么火,这么流行,其中一个很大的原因就是QT能跨平台,一套代码就能在很多的平台上运行。 

 

QT的优点 

跨平台,⼏乎⽀持所有的平台;
接⼝简单,容易上⼿,学习 QT 框架对学习其他框架有参考意义。
⼀定程度上简化了内存回收机制;
对于这里的内存回收机制,我们直到JAVA这样的语言就有,但是C++没有,这是因为C++对性能的要求追求到了极致,所以并没有内存回收机制,QT在这里就做了一个折中处理,设计了一个半自动的内存回收机制,使其对性能的影响尽可能低。

 

开发效率⾼,能够快速的构建应⽤程序。
有很好的社区氛围,市场份额在缓慢上升。
可以进⾏嵌⼊式开发。

 

 QT的应用场景

桌⾯应⽤程序
Qt 能够创建各种类型的桌⾯应⽤程序,包括⽂件管理器、媒体播放器、绘图程序等。Qt 应⽤程序⽀持多种操作系统,可以运⾏在 Windows、Linux、macOS 等桌⾯操作系统上。
移动应⽤程序
Qt ⽀持 Android 和 IOS 移动操作系统,为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤ Qt 构建各种移动应⽤程序,例如社交应⽤、游戏、娱乐等。
嵌⼊式系统
Qt 在嵌⼊式领域应⽤⾮常⼴泛,它可以构建⾯向各种设备的图形应⽤程序,在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤。

 

不过,QT最主要的战场还是桌面应用程序。

搭建QT开发环境 

QT开发环境的概述 

Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse. 

 其中:
Qt Creator是官网提供的开发QT的IDE,这种对新手也比较友好,后续我们以Qt Creator演示为主

Visual Studio开发QT功能强大,但是前期的配置比较麻烦,作为新手还是不太推荐。

Eclipse现在已经停止维护了,不如前两种。

关于QT的开发环境需要三个部分:

1.一个C++编译器,这里的编译器是指gcc这种,不是指Visual Studio这样的IDE,编译器只是IDE调用的一部分。

2.QT SDK,SDK就是指软件开发工具包。

 3.需要一个QT的集成开发环境(IDE)。

这里我们就推荐了 Qt Creator了,并且在官网上下载,可以把前面两个都搞定。

Qt Creator的下载安装 

首先进入QT的官网

右上角

 点击下载

选择开源版

点击后,往下翻找到下载按钮

 自从QT5.14版本后,QT的安装就变成了在线安装,那么安装的时候就需要我们注册账号,登录后才能安装

下好后运行

登录后进行下一步 

 然后把两个勾都选上,继续下一步

接着到后面这一步

 建议选择第二个选项,然后下一步,选择安装目录

 左下角的选项依旧推荐去掉。

接着下一步

这里我们选择QT 6.5.3,注意,这里的MinGW 11.2.0就是我们的C++编译器,这里一定要选上。 

 

 右边选中间这个即可。

然后再下一步就是安装了,然后等待就行了。

 

以上要注意,安装路径不能出现中文。

简单创建第一个QT程序

QT Creator下好后,打开

 点击文件,创建一个新文件

 然后选择第一个 QT Widgets Application

然后选择路径

 

这里的路径同样不能是中文,并且不要有空格。

接下来选额qmake

 

接着下一步选择第二个

 

语言就默认无即可,这里是为了让QT语言国际化用的

 最后就为我们的QT程序选择编译器了

我这里有两个,我们选择MinGW即可 

 然后就能看到我们的main函数了

运行一下:

 

结果:
 

就是一个白框框。

至此,一个简单的QT程序就运行成功了。

环境变量的配置 

虽然这里我们可以直接在QT Creator中运行这个程序,但是我们也想在外面运行这个QT的.exe程序,如果没有配置环境变量,那么操作系统就无法找到对应的.dll动态库,程序就运行不了。

我们对main.cpp那里右键:

这里有一个 在Explorer中显示的选项,点击:

 可以看到它所在的目录,点击build文件夹:

直到找到debug文件夹

点击debug

 发现这里就是我们之前生成的.exe文件了,点击就能直接运行了:

但是如果没有配置环境变量的话,就会报错。

接下来就是配置的步骤:
首先可以先找到QT Creator所在的目录

 

然后我们发现这里是QT Creator的bin目录

 我们要找的东西不在这里,我们选择这里的上上一级目录:
直到Tools目录中:

 这里就看到了 mingw...这个目录,进去找到bin目录

找到bin目录后,将这里的目录进行复制。

然后打开本地的高级系统设置

点击环境变量:

 

 

找到路径Path这里,选择编辑

 

然后把刚刚复制的目录新增进去即可。

 

另外在配置的时候,我们还发现了有一个系统的环境变量,我们两边都配置一下都没有事,系统那边配置了后,所有用户都能看到,而我们的普通用户配置了后,只有普通用户能看到而已。

新增完后记得要保存,至此环境变量就配置好了。

 

一些补充内容 

关于 mingw

 

另外在安装了SDK后,还有一些其它的工具

 

 

创建QT程序时的选项:
 

关于qmake

Qt 中的构建⼯具有三种可供选择,分别是:qmake、CMake、Qbs,下⾯依次介绍。
qmake: qmake 是⼀个构建⼯具(build tool),⽤于⾃动⽣成 makefile ⽂件。qmake ⽀持跨平
台构建。qmake 编辑的是⼀个后缀名为 .pro 的⽂件。
CMake:CMake 是⼀个跨平台的构建⼯具。CMake 本⾝不是⼀个编译器,其实就是⽣成⼀个让编
译器能读懂编译流程的⽂件⼯具。让 CMake ⾃动⽣成构建系统,例如 Makefile 和 Visual Studio
项⽬⽂件。CMake 是⼀个第三⽅⼯具,有⾃⼰的⽂档。
Qbs:Qbs(Qt Build Suite:Qt构建套件)同 qmake、CMake ⼀样都是构建⼯具。Qbs 号称是新
⼀代的构建⼯具,⽐ qmake 编译速度更快。Qbs 没有绑定 Qt 版本,它从项⽬⽂件的⾼级项⽬描述中⽣成⼀个正确的依赖表。⽽传统的 MakeFile ⽣成⼯具如 qmake 和 CMake ,其在⽣成 MakeFile⽂件后将实际的命令交给 Make ⼯具去执⾏。

 

Qt 官⽅声明,因市场原因,弃⽤ Qbs 。对于 Qt ⽤⼾来说,qmake 是当前使⽤最⼴泛的构建⼯具,CMake 其次。

 

自动生成类的选择:
 

 对于基类的选择,⽬前有三种基类:

QMainWindow
主窗⼝类,⼀般⽤于较为复杂的应⽤程序,除了中央客⼾区界⾯,还包括菜单栏、⼯具栏、
状态栏以及多个可停靠的⼯具对话框等

 

QWidget  
最简单、最基本的窗体程序,⾥⾯可以放置多个控件实现程序功能

 

QDialog  
基于对话框的程序,对话框⼀般⽤于弹窗,也可以⽤于主界⾯显⽰。对话框是从QWidget继
承⽽来的,并丰富了⼀些功能,如模态显⽰和返回值等

 

 

 

关于formfile

 QT中创建图形化界面的程序,有两种方式:
1.直接通过C++代码的方式创建界面

2.通过form file以图形化的方式来生成界面。

关于程序的代码解释:

 

当我们双击界面下的.ui文件后

 

 就会自动给我们弹到设计模式,我们可以通过拖拽的方式给我们的框框加内容。

 

在点回.ui文件时,就会看到

 这是一个xml格式的标签语言。

跟应用层协议有点相似。

再看看.pro文件

其实就有点像Makefile。

 但是编译QT程序其实还是会用到makefile的

 

相关文章:

认识QT以及QT的环境搭建

认识QT 什么是QT? Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。 认识客户端 现在我们所说的客户端开发其实大致分为三种: 1.网页前端开发。 2.桌面应用开发(电脑的应用层序) 3.移动应用开发。 而我们的QT的主战场就是在…...

Rollup failed to resolve import “destr“ from ***/node_modules/pinia-plugin-pers

在使用uni-appvuu3piniapinia-plugin-persistedstate开发中, 使用pinia-plugin-persistedstate 一直在报错,其实代码也是比较简单的, import { createPinia } from pinia // 创建 pinia 实例 const pinia createPinia(); import piniaPlugi…...

Python小白学习教程从入门到入坑------第三十课 文件定位操作(语法进阶)

一、文件指针 python中严格来说没有指针这个说法,但有指针这个用法的体现。指针概念常用于c语言、c语言中 在Python的文件操作中,文件指针(也称为文件游标或文件句柄的位置)是一个内部标记,它指示了当前文件操作的读…...

人工智能、机器学习与深度学习:层层递进的技术解读

引言 在当今科技快速发展的时代,人工智能(AI)已经成为一个热门话题,几乎渗透到了我们生活的方方面面。从智能手机的语音助手,到自动驾驶汽车,再到医疗诊断中的图像识别,人工智能的应用正在改变我…...

Code Inspector——页面开发提效的神器

写在前面 优点: 开发提效:点击页面上的 DOM 元素,它能自动打开 IDE 并将光标定位至 DOM 的源代码位置,大幅提升开发体验和效率简单易用:对源代码无任何侵入,只需要在打包工具中引入就能够生效&#xff0c…...

如何定制RockyLinux ISO

目标 基于Rocky9官方ISO做定制,构建自己的ISO 可以添加非官方预装的RPM包实现Kickstart自动化安装, 完成分区等操作ISO安装后,可以执行自定义脚本,比如安装你手动添加的RPM包 Rocky9 官方ISO内容分析 挂载Rocky9 ISO,得到如下…...

python基于深度学习的音乐推荐方法研究系统

需求设计 一款好的音乐推荐系统其目的是为用户进行合理的音乐推荐,普通的用户在登录到系统之后,能够通过搜索的方式获取与输入内容相关的音乐推荐,而以管理员登录到系统之后,则可以进行徐昂管的数据管理等内容操作。此次的需求主…...

机器学习系列----介绍前馈神经网络和卷积神经网络 (CNN)

前言 在深度学习领域,神经网络是一种模拟人脑神经元结构和功能的数学模型。它通过大量的层次结构和参数调整来实现模式识别、分类、回归等任务。常见的神经网络结构有前馈神经网络(Feedforward Neural Networks,简称 FNN)和卷积神…...

vue.js组件和传值以及微信小程序组件和传值

微信小程序组件以及vue.js组件 一.微信小程序组件引用1.创建组件Component2.页面组件引用3.组件传值3.1 父视图传值到子组件 (父---->子)3.2 子组件传值给父组件 (子---->父)3.3 父组件方法传递到子组件 4. 界面之间的传值4.1 正向传值4.2 反向传值…...

c语言编程题(函数)

1编写函数将一个仅包含整数&#xff08;可能为负&#xff09;的字符串转换为对应的整数 方法一使用标准库函数 atoi atoi 函数是C语言标准库中的一个函数&#xff0c;用于将字符串转换为整数。 代码&#xff1a; #include <stdio.h> #include <stdlib.h> // 包含…...

华为eNSP:QinQ

一、什么是QinQ&#xff1f; QinQ是一种网络技术&#xff0c;全称为"Quantum Insertion"&#xff0c;也被称为"Q-in-Q"、"Double Tagging"或"VLAN stacking"。它是一种在现有的VLAN&#xff08;Virtual Local Area Network&#xff0…...

JAVA基础-多线程线程池

文章目录 1. 多线程1.1什么是多线程&#xff08;1&#xff09;并发和并行&#xff08;2&#xff09;进程和线程 1.2多线程的实现方式1.2.1 方式一&#xff1a;继承Thread类1.2.2 方式二&#xff1a;实现Runnable接口1.2.3方式三: 实现Callable接口 1.3 常见的成员方法1.3.1 设置…...

HarmonyOS 沉浸式状态实现的多种方式

1. HarmonyOS 沉浸式状态实现的多种方式 HarmonyOS 沉浸式状态实现的多种方式 1.1. 方法一 1.1.1. 实现讲解 &#xff08;1&#xff09;首先设置setWindowLayoutFullScreen(true)&#xff08;设置全屏布局&#xff09;。   布局将从屏幕最顶部开始到最底部结束&#xff0c…...

Python3.11.9下载和安装

Python3.11.9下载和安装 1、下载 下载地址&#xff1a;https://www.python.org/downloads/windows/ 选择版本下载&#xff0c;例如&#xff1a;Python 3.11.9 - April 2, 2024 2、安装 双击exe安装 3、配置环境变量 pathD:\Program Files\python3.11.9...

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…...

减少 try...catch,定义全局统一异常处理器!

前言 软件开发springboot项目过程中&#xff0c;不可避免的需要处理各种异常,spring mvc 架构中各层会出现大量的try {...} catch {...} finally {...}代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而且还影响代码的可读性。这样就需要定义个全局统一异常处理器&#x…...

多点支撑:滚珠导轨的均匀分布优势!

滚珠导轨的滚珠稳定性可以有效保持滚珠导轨的稳定运行&#xff0c;减少滚珠脱落的风险&#xff0c;确保设备的长期稳定性和可靠性。事实上&#xff0c;滚珠导轨的滚珠稳定性主要依赖于以下几个方面&#xff1a; 1、精密的制造工艺&#xff1a;滚珠导轨的导轨和滑块通常采用高精…...

电气火灾探测器在商场火灾隐患监测和火灾预防中的应用

徐悦 安科瑞电气股份有限公司 近年来&#xff0c;全国火灾事故频发&#xff0c;尤其是在大型商场等公共场所&#xff0c;火灾造成了巨大的人员伤亡和财产损失。以南京金盛百货中央门店火灾为例&#xff0c;该起事故暴露了商场在电气安全、消防管理方面的重大隐患&#xff0c;…...

速盾:如何有效防止服务器遭受攻击?

服务器攻击是网络安全中常见的问题&#xff0c;但我们可以采取一系列的措施来有效防止服务器的遭受攻击。以下是一些常见的防御措施&#xff1a; 更新和维护服务器软件&#xff1a;及时更新操作系统、应用程序以及安全补丁&#xff0c;以确保最新版本的软件没有已知的漏洞。同时…...

【今日更新】使用Python辅助处理WebGIS

Linux发行版本: Debian GNU/Linux 12 (bookworm)操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36Python版本: 3.11.2 1.使用Python处理MapServer配置文件Mapfile 创建、分析、修改和格式化的python库 MapServer Mapfiles。 Python 2和3 兼容 纯Python-无MapServer依…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

简约商务通用宣传年终总结12套PPT模版分享

IOS风格企业宣传PPT模版&#xff0c;年终工作总结PPT模版&#xff0c;简约精致扁平化商务通用动画PPT模版&#xff0c;素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...