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

【QT】背景,安装和介绍

@TOC

     

目录

背景

GUI技术

QT的安装

使用流程

QT程序介绍

main.cpp​编辑

Wiget.h

Widget.cpp

form file 

.pro文件

临时文件


        C++作为一门比较古老的语言,在人们的认知里始终是以底层,复杂和高性能著称,所以在很多高性能需求的场景之下,C++成为了不二之选,今天讲的QT与这些相反,更突出一种便捷性,他是C++在客户端开发的一门技术。

背景

GUI技术

        我们在使用C++进行代码编译的之后,印象最深的就是命令行界面以及终端界面(黑框框), 这几乎贯彻了博主在学习C++整个过程的始末,这样的风格叫做TUI, 这样的软件一般的受众都是程序员, 代表的软件是gcc,gdb等.

        与之相反的一种风格叫做GUI, 即图形化界面,这个就是我们平时日常生活中使用的,QT就是用来编写桌面的GUI程序的一套框架。

        除了QT外,GUI技术还有很多类型:

  1. Windows API接口,windows系统提供了一套原生的API接口用来实现桌面应用程序,不过这样开发起来相当的繁琐,对应的接口感兴趣可以去微软的官方文档上面去阅读,里面有对桌面程序的开发介绍,以及相关的接口说明,博主之前使用这些接口完成了一个简单的windows任务管理器的创建,整个过程还是受益匪浅的。
  2. MFC, 这个是相当老的一个框架,也是微软推出的基于C++的应用程序框架,采用消息映射的机制,将windows消息与类成员函数绑定,方便处理用户交互事件。
  3. C#, 这个还是微软搞得,用于客户端开发的一门语言。

        这些是我比较了解的,除了这些之外,还有很多别的技术,比如WPF, UWP 等。

        QT相比这些最大的优势就是可以跨平台。它支持windows各个版本,Linux各种发行版(Linux中的KDE桌面就是基于QT开发的), MAC系统, 嵌入式系统,甚至以前的诺基亚,它的塞班系统就是用QT作为开发应用程序的解决方案的。

        其次就是上面我们提到了简便性,这是因为QT有一套大家共同认可的框架。C++相比其他语言有一个很大的劣势就是生态割裂。像前端,Java都存在一个很大的社区,这个社区的框架在这个语言中占据着主导地位,而C++的社区没有这样的情况,所以框架五花八门无法统一下来。QT是其中的异类,他有一套被大家共同认可的框架,使用框架编程,难度自然少了很多。

综上,QT的优点有:

  • 跨平台, 几乎支持所有的平台。
  • 接口简单,容易上手。
  • 简化了内存回收机制(半自动的垃圾回收,能够简化内存释放,也能尽可能小地影响程序的运行该效率)
  • 开发效率高,能够很快的构建应用程序
  • 可以进行嵌入式开发

QT的安装

编写QT程序,就需要一个QT的集成开发环境(IDE)

  1. QT Creator
  2. Visual Studio
  3. Eclipse

我们今天是使用QT官方提供的IDE——QT Creator。

主要的安装流程不细讲,就是通过官网安装,装好之后,需要配置一下环境变量,将QT SDK中的某个路径加入到Path环境变量中。

这样做的目的是:

  • 让操作系统 / Qt Creator 工具,能够找到 Qt SDK 中提供的exe可执行程序
  • 运行Qt程序的时候,能够找到对应的.dll动态库

接下来说一下我们安装的这些程序到底有什么作用

这个就是我安装生成的程序

  • Assistant 5.14.0  QT自带的离线版本的官方文档
  • Designer 5.14.0  QT设计师。 图形化的设计界面工具,通过拖动控件的方法来快速生成界面。通常可以和QT Creator搭配使用。
  • Linguist 5.14.0 QT预言家,作用是对国际化进行支持,用于海外服务。允许单独创建一个配置文件,将界面文字的各种语言翻译配置进去,类似游戏中的一键切换语言。
  • QT Creator 4.11.0  QT的集成开发环境

使用流程

第一步: 创建新的工程

第二步:选择应用程序的开发方式

第三步:命名和创建路径

第四步:选择构造系统

可以从qmake, cmake, Qbs中选择。

第五步:选择自动生成的类的父类

  • QMainWindows 完整的应用程序窗口(可以包括菜单栏,工具栏,状态栏)
  • QWight 表示一个控件(窗口上的一个具体元素,输入框, 下拉框,按钮等)
  • QDialog 表示一个对话框

QT中内置的类都是以Q前缀开头的

第七步:国际化

第八步:选择基于哪个编译器的QtSDK来构建后续代码。

QT程序介绍

main.cpp

Wiget.h

Widget.cpp

form file 

双击点开ui界面,Qt Creator就会调用Qt Designer,打开ui文件,图形化的界面编译器

里面时Qt的内置控件,以及一些编译属性,通过这个编译属性可以修改每个控件的具体行为。

通过Qt Designer可以打开左侧的编译,可以看到xml格式的代码

.pro文件

临时文件

在运行一次程序之后,就会在项目目录并列的地方,多一个”build -xxxxxxx“ 目录,这个目录里面就是该项目运行过程中,生成的一些临时文件。

里面的内容如下:

其中的ui_widget.h就是一个xml生成的头文件。

相关文章:

【QT】背景,安装和介绍

TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp​编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言,在人们的认知里始终是以底层,复杂和高性能著称,所以在很多高性能需求的场景之下…...

从0到1搭建webpack

好,上一篇文章我们说了一下在react中怎么弄这个webpack,那么现在在说一下不用react我们又该怎么配置,这些呢也都是我自己通弄过看视频自己总结的,拿来给大家分享一下。 前期准备条件 1、nvm(可以快速切换node版本&am…...

针对解决conda环境BUG的个人笔记

1-conda学习&安装 安装视频: 零基础教程:基于Anaconda和PyCharm配置Pytorch环境_哔哩哔哩_bilibili 安装过程: MX250笔记本安装Pytorch、CUDA和cuDNN-CSDN博客 Win10MX250CUDA10.1cuDNNPytorch1.4安装测试全过程(吐血)_nvidia geforc…...

读《Effective Java》笔记 - 条目13

条目13:谨慎重写clone方法 浅拷贝和深拷贝 浅拷贝(Shallow Copy) 浅拷贝 只复制对象本身,而不复制对象引用的成员。 对于引用类型的字段,浅拷贝会将原对象的引用复制到新对象中,而不会创建新对象实例。因…...

SQL 之连接查询

SQL 连接查询:深入理解 JOIN 操作 在数据库管理中,连接查询(JOIN)是一种基本而强大的操作,它允许我们从两个或多个表中检索数据。SQL 中的 JOIN 操作使得数据整合变得简单,这对于数据分析和报告至关重要。…...

vscode切换anaconda虚拟环境解释器不成功

问题: 切换解释器之后运行代码还是使用的原来的解释器 可以看到,我已经切换了“nlp”解释器,我的nltk包只在“nlp”环境下安装了,但是运行代码依然是"torch"解释器,所以找不到“nltk”包。 在网上找了各种…...

一个实用的 Maven localRepository 工具

目录 1 现状2 当前解决3 更好的解决3.1 下载 Maven localRepository 工具包3.2 上传本地 localRepository 包3.3 清理 localRepository 中指定后缀的文件 1 现状 在使用 Maven 时,我们可能会经常与本地仓库和私服仓库打交道。 例如对于本地仓库,因为某…...

目标检测,图像分割,超分辨率重建

目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...

微信小程序 城市点击后跳转 并首页显示被点击城市

在微信小程序中,渲染出城市列表后,如何点击城市,就跳转回到首页,并在首页显示所点击的城市呢? 目录 一、定义点击城市的事件 二、首页的处理 首页:点击成都市会跳转到城市列表 城市列表:点击…...

Linux - nfs服务器

五、nfs服务器 1、基础 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多,而不同的功能都会使用不同的程…...

uniapp图片上传预览uni.chooseImage、uni.previewImage

文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…...

C++ 字符串中数字识别

【问题描述】 输入一个字符串,含有数字和非数字字符,如“sumabc234;while(abc700)tab{ass346;bssabc267;}”,将其中连续的数字作为一个整数,依次存放到一个数组nums中。例如,234放在nums[0],700放在nums[1…...

学术中常见理论归纳总结-不定期更新

1.信息传播类 1.1 扩散创新理论 创新扩散理论是传播效果研究的经典理论之一,是由美国学者埃弗雷特罗杰斯(E.M.Rogers)于20世纪60年代提出的一个关于通过媒介劝服人们接受新观念、新事物、新产品的理论,侧重大众传播对社会和文化的影响。 1927-1941年进行的“艾奥瓦杂交玉…...

ModelSim怎么修改字体及大小

点击TOOLS 选择PERFERENCES选择下一级菜单的TEXTFONT/CHOOSE/选择字体和大小最后不要忘记点apply再退出...

图片预处理技术介绍4——降噪

图片预处理 大家好,我是阿赵。   这一篇将两种基础的降噪算法。   之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…...

Scrapy管道设置和数据保存

1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…...

D84【python 接口自动化学习】- pytest基础用法

day84 pytest常用断言类型 学习日期&#xff1a;20241130 学习目标&#xff1a;pytest基础用法 -- pytest常用断言类型 学习笔记&#xff1a; 常用断言类型 代码实践 def test_assert():assert 11assert 1!2assert 1<2assert 2>1assert 1>1assert 1<1assert a…...

如何正确书写sh文件/sh任务?bash任务

正确书写xx.sh文件的方式为&#xff1a; source /usr/local/miniconda3/bin/activate condaEnv export CUDA_VISIBLE_DEVICES0 cd /hy-tmp/test export PYTHONPATH"xxx:$PYTHONPATH" python AAA.py python BBB.py python CCC.py 直接运行&#xff1a; bash xx.sh 即可…...

多线程篇-5--线程分类(线程类型,springboot中常见线程类型,异步任务线程)

常见的线程类型包括用户线程&#xff08;User Threads&#xff09;、守护线程&#xff08;Daemon Threads&#xff09;、主线程&#xff08;Main Thread&#xff09;、工作线程&#xff08;Worker Threads&#xff09;和线程池中的线程。 一、用户线程&#xff08;User Thread…...

docker快速部署gitlab

文章目录 场景部署步骤默认账号密码效果 场景 新增了一台机器, 在初始化本地开发环境&#xff0c;docker快速部署gitlab 部署步骤 编写dockerfile version: 3.7services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlabenviron…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...