Qt的入门

news2024/11/26 17:29:27

Qt的入门

  • 1.Qt的配置
  • 2.介绍Qt的使用
    • 2.1 Qt 5.14.2
    • 2.2 Linguist 5.14.2
    • 2.3Designer 5.14.2
    • 2.4 Assistant 5.14.2
    • 2.5 Qt Creator 4.11.1
  • 3.创建第一个项目
    • 3.1点击文件来新建一个新的文件或项目
    • 3.2选择项目路径和名称
    • 3.3选择构建工具
    • 3.4类信息
    • 3.5翻译文件
    • 3.6选择编译器
    • 3.7项目管理
    • 3.8运行
  • 4.项目细节说明
    • 4.1 mian.cpp
    • 4.2 widget.h
    • 4.3 widget.cpp
    • 4.4 widget.ui
    • 4.5 项目名.pro
    • 4.6更详细文件

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Qt的学习】
📝📝本篇内容:Qt的配置;介绍Qt的使用;创建第一个项目;项目细节说明
⬆⬆⬆⬆上一篇:Linux高级IO
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.Qt的配置

在我们安装完Qt软件后,我们先需要配置一下环境变量,来让我们的Qt Creator工具能够找到Qt SDK中提供的exe以及让Qt程序运行的时候,能够找到对应的.dll动态库。

1.先找到安装Qt的文件夹,在其中找到对应的最里面的bin文件夹,并复制路径

在这里插入图片描述

2.找到电脑对应的环境变量

在这里插入图片描述

3.找到系统变量中的Path,然后进行新建,添加刚刚复制的路径,然后一直点确定就可以了

在这里插入图片描述

2.介绍Qt的使用

在这里插入图片描述
这些工具程序能够在电脑的开始页面找到,它们都是Qt SDK自带的一些工具程序

2.1 Qt 5.14.2

在这里插入图片描述
它点进去就是一个黑框框,要使用命令行,可以使用它来编译文件什么的

2.2 Linguist 5.14.2

在这里插入图片描述
Qt语言家是用来进行国际化支持的,有的时候写的程序需要和国际接轨,可以创建一个语言配置文件,把界面上需要用到的各种文字,都配置到文件中,并且在文件中提前的把各种语言的翻译都配置进去

2.3Designer 5.14.2

在这里插入图片描述
图形化的设计界面的工具,可以通过拖拽控件的方式来快速生成界面,通过搭配Qt Creator来使用

2.4 Assistant 5.14.2

在这里插入图片描述
Qt自带的离线版本的官方文档

2.5 Qt Creator 4.11.1

在这里插入图片描述
Qt的集成开发工具

3.创建第一个项目

3.1点击文件来新建一个新的文件或项目

在这里插入图片描述
我们传统的开发GUI的方式叫做Qt Widget,Qt他不仅仅支持C++,也支持Python和Java,下面的Qt Quick是新搞出来的一套开发GUI的方式

3.2选择项目路径和名称

在这里插入图片描述

3.3选择构建工具

在这里插入图片描述
我们一般都是使用qmake,cmake并非Qt专属,很多的开源项目都会使用cmake,Qbs是新一代的Qt构建工具,但是用的很少。
构建的话是通过Qt写的程序,会涉及到一系列的元编程技术,即通过代码来生成代码。Qt的框架会在编译的时候,自动先调用系列的生成工具,基于你自己写的代码,生成一系列的其他的C++代码,最终编译的代码,也是最后生成的这些代码。

3.4类信息

在这里插入图片描述
使用Qt Creator创建项目,会自动生成一些代码出来,生成代码就包含一个类,Base class就是要选择这个自动生成的类的父类是谁
QMainWindows的界面是完整的应用程序窗口(可以包含菜单栏,工具栏,状态栏)
QWidget表示一个控件(窗口上的一个具体元素,输入框,按钮)
QDialog表示一个对话框
Qt中内置的类都是以Q前缀开头的
其中生成的文件名和类名是相关联的(推荐)
下面的form file是用来通过图形化的方式来生成界面,此时就可以通过使用Qt Designer或者Creator来编辑这个ui文件,通过图形化的方式生成图形界面

3.5翻译文件

在这里插入图片描述
选择翻译文件,可以不用管,这跟前面的国际化有关系

3.6选择编译器

在这里插入图片描述
选择一下基于哪个编译器的Qt SDK来构建后续代码

3.7项目管理

在这里插入图片描述
可以选择git来作为版本控制系统,也可以可以直接点完成

3.8运行

在这里插入图片描述
下面是运行按钮
在这里插入图片描述

4.项目细节说明

4.1 mian.cpp

在这里插入图片描述
其中主函数中的第一行的QApplication是一个Qt提供的一个类,它创造了一个对象,编写一个Qt的图形化界面程序是所必须有的
Widget是之前在创建项目时所想要生成的一个类,它父类是QWidget,下一行是创建了一个QWidget的控件对象,然后通过show()函数来让控件显示出来,相对应的hide()函数是让控件隐藏起来,这些都是它的父类QWidget提供的
再接下来的的是一个exec,是为了能够让程序执行起来

4.2 widget.h

在这里插入图片描述
这个整个头文件是一个Widget类的一个声明,它也展现出了它是继承了QWidget父类,这个类是Qt的软件开发工具包内置的,同时使用这个类就需要包含对应的头文件,这里我们可以发现,我们所想要用的类名和头文件是一样的,这对于我们使用来说是非常便利的。
在它的类中,还有一个宏定义Q_OBJECT,它是Qt内置的宏,它展开后有一大堆的代码,如果类中想要使用“信号和槽”就需要引入这个宏,如果想要具体查看的话可以按Ctrl+点击
其中Widget类的构造函数是有参数的,这个parent是在后期用于对象树的,创建Qt的对象,就可以把这个对象给挂到对象树上,此时就需要指定父节点
类中的对象只有一个指针,它是和form file密切相关

4.3 widget.cpp

在这里插入图片描述
其中第一行包含的头文件就是创建项目时选择要创建的头文件,第二行头文件是form file被qmake生成的头文件
在构造函数中的初始化列表它所用到给ui对象初始化以及用ui指针来调用setupUi的两者作用是为了把form file生成的界面和当前widget关联起来

4.4 widget.ui

在这里插入图片描述
当前我们如果点击文件的话会跳到这个界面,此时就是我们的Qt Creator会调用Qt Desigener,来打开ui文件,我们可以拖动左边的控件到中间的程序窗口中,来进行创建改变我们的界面了。右下角是每个控件的属性
此时当我们点击到编辑页面,我们就会转到代码页面,这里面的所使用的格式是xml格式,它和html格式很相似,但是他们两有本质的区别:xml的标签所表示的含义是自定义的,而html的格式是有标准规定好的
我们的Qt是使用qmake来调用相关的工具,并且通过我们的xml文件来构建生成一些对应的C++代码,从而生成整个界面

4.5 项目名.pro

在这里插入图片描述

这个是项目的工程文件,它是qmake工具构件时重要的一个依据,它其实类似于我们的Linux下的makefile,但是它比makefile更加的简单方便,我们不需要亲自来维护,有Qt Creator来帮助我们自动维护

4.6更详细文件

我们可以通过右击项目名.pro,然后选择“在explorer中显示”,可以查看更多的文件,他们都是编译运行过程中产生的中间文件
在这里插入图片描述
当我们查看上级目录时会发现一个叫build的目录,这个目录就是该项目运行过程中产生的临时文件
在这里插入图片描述
它的里面出现了makefile文件,它是Qt qmake自动生成的
在这里插入图片描述
其中最引人注目的是ui_widget.h,它里面是Qt根据xml生成的头文件内容,它的内容就是用C++编写的能够生成构建具体界面的代码,它其实就是widget.h头文件中Widget类中的ui指针,虽然长得不一样
在这里插入图片描述
在这里插入图片描述

然后ui调用setupUi这个函数就构建出了界面

🌸🌸Qt的入门大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1875674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法学习】射线法判断点在多边形内外(C#)以及确定内外两点连线与边界的交点

1.前言: 在GIS开发中,经常会遇到确定一个坐标点是否在一块区域的内部这一问题。 如果这个问题不是一个单纯的数学问题,例如:在判断DEM、二维图像像素点、3D点云点等含有自身特征信息的这些点是否在一个区域范围内部的时候&#x…

第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)

大家好,我是网创有方 。这节记录下如何使用ConfigurationProperties来实现自动注入配置值。。实现将配置文件里的application.properties的参数赋值给实体类并且打印出来。 第一步:新建一个实体类WechatConfig package cn.wcyf.wcai.config;import org…

C++进阶之哈希

一、unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行…

Langchain-实战篇-搭建本地问答机器人-01

项目背景 在这个快节奏的职场世界里,我们每个人都可能在某个时刻,化身为一头辛勤的牛或一匹奔腾的马,面对入职签合同时的迷茫,或是离职时的纠纷,心中难免会涌现出各种疑问。比如: "这份合同里的条款…

PAI3D: Painting Adaptive Instance-Prior for 3D Object Detection论文讲解

PAI3D: Painting Adaptive Instance-Prior for 3D Object Detection论文讲解 1. 引言2. PAI3D框架2.1 Instance Painter2.2 Adaptive Projection Refiner2.3 Fine-granular Detection Head 3. 实验结果3.1 消融实验 1. 引言 3D目标检测对于自动驾驶来说是一个非常重要的模块&a…

wsl ubuntu 安装Anaconda3步骤

如何在Ubuntu上安装Anaconda3呢?本章记录整个安装过程。 1、下载脚本 https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 下载之后,将脚本上传到Ubuntu里。 2、安装脚本 bash Anaconda3-2021.11-Linux-x86_64.sh根据提示进行安装,提示输…

NIVision-LabVIEW在灰度图上画圆

问题来源 在csdn上看到的这样一个问题,好像也没个正经答案,都用chatGPT回答,挺没劲的。不说提供个vi源代码,至少也来张截图嘛。我想着问题也不难,就自己动动手吧。 代码展示1 1、首先使用imaq ArrayToImage.vi创建了一…

抖音微短剧小程序源码搭建:实现巨量广告数据高效回传

在数字化营销日益盛行的今天,抖音微短剧小程序已成为品牌与观众互动的新渠道。这些短小精悍的剧目不仅能迅速抓住用户的注意力,还能有效提升品牌的知名度和用户黏性。然而,想要充分利用这一营销工具,关键在于如何高效地追踪广告数…

effective java (1)(考虑使用!)静态工厂方法代替构造方法

只是目前阶段 对本书第一章内容的浅显认知,说实话 这一章 我看了4遍左右,每一遍感觉都不一样 他的创建模式 有时候像设计模式,但作者已经在原文中描述,它并不等价于 设计模式 我们正常 创建一个年级类 是长这样的 我们不写成标准…

day57---面试专题(框架篇)

框架篇 1. Spring refresh 流程 要求 掌握 refresh 的 12 个步骤Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refre…

【期末速成】计算机操作系统 EP02 | 学习笔记

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点二:操作系统的功能及接口2.2 考点三:操作系统的发展及分类2.2 考点四:操作系统的运行环境(重要) 一、前言&#x…

LabVIEW航空用电缆检测

系统通过集成LabVIEW平台,实现了航空用电缆检测过程中的自动数据收集、处理和报告生成,显著提升了检测效率和数据准确性,降低了人工干预,提高了电缆检测的可靠性。 项目背景 在航空领域,电缆的质量检测对确保飞机及其…

【Python】已解决:TypeError: Object of type JpegImageFile is not JSON serializable

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:TypeError: Object of type JpegImageFile is not JSON serializable 一、分析问题背景 在进行Python编程时,特别是处理图像数据和JSON序列化时&…

星光云720全景VR系统源码

星光云720全景VR系统源码 系统体验地址项目介绍JDK版本后端主要依赖前端框架前端node 版本用户端框架介绍技术选型依赖全景内容简介系统图片部分功能截图系统体验地址 系统体验地址 VR全景系统体验地址 账号:18175760278 密码:12345678 项目介绍 JDK版…

如何应对pcdn网络拥塞和设备性能限制?

应对PCDN网络拥塞和设备性能限制,可以采取以下操作: 一、应对网络拥塞 1.优化路由选择:通过选择最优的路由路径,降低数据包在传输过程中的拥堵概率,从而减少网络拥塞的发生。 2.流量控制与调度: 3.流量…

安装 Kali NetHunter (完整版、精简版、非root版)、实战指南、ARM设备武器化指南、andrax、安卓渗透drozer

From:https://www.kali.org/docs/nethunter/ NetHunter 实战指南:https://www.vuln.cn/6430 乌云 存档:https://www.vuln.cn/wooyundrops 1、Kali NetHunter Kali NetHunter 简介 Net(网络),hunter&#x…

Animate软件基础:从图层文件夹复制帧

图层文件夹是用来对图层进行管理的功能,可以参考系统中文件夹的作用,而且同样可以多重文件夹进行放置,直接使用鼠标拖动就可以改变文件夹的位置和所属层级: 要选择整个文件夹,请折叠文件夹(单击时间轴中文件…

一篇大模型 Agent 工具使用全面研究综述

使用大型语言模型(LLMs)进行工具学习已成为增强LLMs能力以解决高度复杂问题的一个有希望的范式。尽管这一领域受到越来越多的关注和快速发展,但现有的文献仍然分散,缺乏系统性的组织,为新来者设置了进入障碍。因此对LL…

chatTTS 最强文字转语音模型本地部署!

今天本地部署了下传说中的语音合成大模型chatTTS,合成效果非常不错,比市面上其他工具合成的感情更丰富,语气更自然一些,一起来听听。 英文: React apps are made out of components. A component is a piece of the UI…

【Vue】Vue.js中常见的几种语法

在 Vue.js 中,主要的语法可以分为以下几种: 插值语法 (Interpolation) 使用双大括号 {{ }} 进行文本插值。 示例: {{ message }} 指令语法 (Directives) 指令是特殊的标记,用于告诉Vue框架如何操作DOM。Vue提供了多种内置指…