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

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...