当前位置: 首页 > 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依…...

Linux 消息队列

在Linux中&#xff0c;线程间消息队列可以通过使用System V消息队列或POSIX消息队列来实现。 使用System V消息队列&#xff1a; System V消息队列是一种基于IPC&#xff08;Inter-process Communication&#xff0c;进程间通信&#xff09;的通信机制&#xff0c;可以用于进程…...

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要…...

delphi 编译多语言工程 error RC2104 : undefined keyword or key name:

Delphi 10.3中建立多语言工程&#xff0c;编译时出现错误&#xff1a;error RC2104 : undefined keyword or key name: 出现错误的的文件是.rc文件&#xff0c;出现错误的位置是 System_JSONConsts_SInvalidJavascriptQuote, L"Invalid JavaScript string quote character…...

[python] 如何debug python脚本中C++后端的core dump

文章目录 Debug过程Reference Debug过程 另外&#xff1a;对于core dump: gdb版本是>7&#xff0c;gdb从版本7开始支持对Python的debug。确保你的系统中安装了 GDB 调试器和对应版本的 Python 调试信息包&#xff08;例如 python-dbg 或 python-debuginfo&#xff09;。 #…...

Ecmascript(ES)标准

Ecmascript&#xff08;ES&#xff09;标准 ECMAScript&#xff08;通常简称为 ES&#xff09;是一种标准化的脚本语言&#xff0c;由 Ecma International 通过 ECMA-262 标准定义。ECMAScript 是 JavaScript 的规范版本&#xff0c;几乎所有的现代浏览器和许多服务器端环境&a…...

易泊车牌识别相机:4S 店的智能之选

在当今数字化时代&#xff0c;科技的进步不断为各个行业带来更高效、便捷的解决方案。对于 4S 店来说&#xff0c;易泊车牌识别相机的出现&#xff0c;无疑为其运营管理带来了全新的变革。 一、易泊车牌识别相机的强大功能 易泊车牌识别相机以其卓越的性能和精准的识别能力&…...

Webpack 深度解析与实战指南

文章目录 前言一、安装于基本配置安装Webpack 和 Webpack CLI创建基本配置文件 二、加载器常见的加载器配置加载器 三、插件&#xff08;Plugins&#xff09;常用的插件配置插件 四、性能优化缓存代码分割Tree Shaking压缩 五、开发服务器安装服务器配置服务器启动服务器生产环…...

【RabbitMQ】06-消费者的可靠性

1. 消费者确认机制 没有ack&#xff0c;mq就会一直保留消息。 spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack2. 失败重试机制 当消费者出现异常后&#xff0c;消息会不断requeue&#xff08;重入队&#xff09;到队列&#xff0c;再重新发送给消费者。…...

【K8S系列】如何监控集群CPU使用率并设置告警的分析与详细解决方案

监控 Kubernetes 集群的 CPU 使用率并设置告警是确保集群健康和性能的关键。以下是几种常见的方案&#xff0c;每种方案的具体步骤都进行了详细说明。 方案 1: 使用 Prometheus 和 Grafana 1. 安装 Prometheus 和 Grafana 1.1 使用 Helm 安装 Prometheus 添加 Helm 仓库: hel…...

解线性方程组(二)

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法&#xff0c;提高编程能力和解算线性方程组问题的实践技能。 实验内容&#xff1a; 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…...

手机投资网站/广东网络seo推广公司

我感觉我是一个比较有发言权的人吧&#xff0c;我在测试行业爬模滚打5年&#xff0c;从点点点的功能测试到现在成为测试开发工程师&#xff0c;工资也翻了几倍&#xff1b; 个人觉得&#xff0c;测试的前景并不差&#xff0c;只要自己肯努力&#xff1b;我刚出来的时候是在鹅厂…...

有单独做网站维护的必要吗/磁力搜索器下载

1. 给定a、b两个文件&#xff0c;各存放50亿个url&#xff0c;每个url各占64字节&#xff0c;内存限制是4G&#xff0c;让你找出a、b文件共同的url&#xff1f; 方案1&#xff1a;可以估计每个文件安的大小为50G64320G&#xff0c;远远大于内存限制的4G。所以不可能将其完全加载…...

嘉善县住房和城乡规划建设局网站/竞价托管推广多少钱

https://blog.csdn.net/u012867916/article/details/77430393...

网站开发站点的文件夹/网络营销的方法有哪些?

如何选择合适的图表类型和使用场景 以QUICK BI 来介绍常见基本图形以及应用场景...

如何用axure做网站/网站推广服务外包

近期有部分网友问我有关多条外线路由备份和负载均稀的问题,由于时间关系,我简单的写了一下配置....下面是以双外线路由备份为例的..多外线路无非就是在原来的基础上增加相应的策略路由....如有遗漏,请指教.... 前提是在各接口等基础配置完毕的情况下. (1)可以针对两条线路先加两…...

网络公司网站建设彩铃样本/优化大师win10

Better to Follow, Follow to Be Better: Towards Precise Supervision of Feature Super-Resolution for Small Object Detection 摘要:具体实现:超分辨率的目标提取器:超分辨率特征生成器:实验结果:摘要: 尽管最近基于提案的CNN模型在目标检测方面取得了成功,但由于小…...