【Qt开发】初识Qt

1. Qt的背景 1.1 Qt是什么

Qt是⼀个跨平台的C++图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全面向对象的,很容易扩展。Qt为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤C++语⾔进⾏⾼级开发。

1.2 Qt的发展史 1.3 Qt支持的平台

Qt是一个跨平台的C++图形用户界面应用程序框架,支持以下平台

2. Qt开发环境的搭建

Qt开发环境的搭建需要三个部分:

一个C++编译器(gcc/g++,MSVC,clang)Qt SDK(Qt的软件开发包)Qt的集成开发环境(IDE)

实际上Qt官方提供了Qt 就包含了这三个内容

接下来就是手把手搭建环境的教程,我们本次搭建的就是Qt 开发环境

2.1 Qt SDK下载

Qt下载官⽹:

国内清华源:

1、打开官网链接,进入如下界面;

2、 我们选择5.14版本下载,具体的小版本差别不大;

3、 选择桌面应用程序

2.2 Qt SDK的安装

1、找到下载的⽂件并双击;注意:在双击之前先断⽹,否则需要我们注册Qt账号登录后才能进⼊下⼀步安装;

2、双击之后进⼊如下界⾯:

3、选择安装路径时不能出现中⽂路径,否则即使安装上也⽆法使⽤;

4、 根据自己的需要选择下载模块

5、 同意安装协议

6、 然后一直下一步、安装

7、 安装完成,在开始菜单能看到如下几个东西

由于这里我安装了MinGW和MSVC两个编译器,所以这里有两个版本的

3. 一个简单的Qt模板程序的创建

1、打开Qt ,到如下界面

2、点击文件-新建文件或项目

3、选择-Qt –

4、填写项目名和路径:这里路径一定不能有中文

5、使用qmake构建

6、这里有3个基础的基类,适用于不同的环境,这里我们先使用

选择之后,会发现相关的文件名都会跟着改变,是因为这里的文件名和类名是关联的。但是这种关联是一种弱关联,可以手动修改,但是建议还是搞成一样的。

7、 选择翻译文件,这里我们不搞那么复杂,这个就不动

8、选择编译器,这里使用MinGw,如果只安装了一个就不用选了

9、 版本控制器,按自己的需要添加qt界面开发教程,我这边不添加

10、点击完成之后,稍等片刻就构建完成了一个Qt的项目

接下来就可以按照自己的需求进行开发了

4. Qt模板程序的代码讲解

在一个Qt项目构建完成之后,会自动创建一些文件并填充内容,接下来我们分别讲解这些文件和里面的内容

4.1 main.cpp

这个文件里包含了main函数,这个一个C/C++程序的入口

4.2 .h

的声明

4.3 .cpp

的实现

4.4 .ui

在这里就可以手动的设计显示的窗口中的内容

此时再点击编辑qt界面开发教程,就能看到.ui的内容

本质上是一个xml文件。

Qt中就是使用xml文件描述程序的界面是什么样的,进一步的qmake就会调用相关的工具,依据这个xml文件生成一些C++代码,从而把完整的界面构造出来

注意:我们自己编写的代码并不会直接被编译,而是需要被qmake调用的相关工具处理后,编译生成后的代码

4.5 .pro

这个文件是qmake构建这个Qt项目的依赖信息,我们不深究。

可以类比Linux下自动构建工具make和,这个文件就是和一样的功能。

一般文件名为项目名.pro,这里的项目是,所以显示为上述文件名。

4.6 一些中间文件

右键xxx.pro文件,点击在中显示,让项目在文件资源管理器中显示

在上级目录中,我们可以看到

里面就是一些中间文件

其中.h文件就是xml生成的.h文件!!!

5. Qt在窗口显示内容

接下来我们将使用两种方式在窗口上显示hello world

5.1 通过图形化的方式显示

1、双击.ui,到设计界面

2、在组件里面找到 中的Label标签

3、鼠标左键按住,将标签拖到窗口

4、 CTRL+R快速编译运行,可以看到hello world就被打印出来

回到.ui文件中,可以看到多了一些描述这个Label的内容

5.2 通过纯代码的方式显示

重新创建一个新项目,这次使用纯代码的方式来实现

我们要显示的内容可以理解成是存放在对象中的,然后通过show方法显示出来,所以如果想要显示出来相关控件的话,可以在类的构造函数中创建

一般通过代码来构造界面的时候【Qt开发】初识Qt,通常会把构造界面的代码放到/的构造函数中

所以在.cpp文件中找到构造函数的实现,在里面增加一个对象即可

通过这三行代码我们就能实现这个功能,接下来运行看看结果

可以看到已经成功在窗口显示内容,但是这个位置不太对劲,这是因为我们没有设定对象的显示位置,所以默认在左上角

6. Qt的内存回收机制(对象树)

在上面使用代码实现创建的过程中,我们写了new,但是好像没有写,这样会不会造成内存泄漏呢?

答案是不会,这是因为Qt中使用了对象树机制【Qt开发】初识Qt,实现了仿内存回收机制

原理是:每创建一个控件对象,都传入他的父对象指针,从而把当前对象和父对象链接起来,这样递归创建之后,就产生了一个对象树(这是一个N叉树),当一个窗体关闭的时候,再统一释放这个窗体为祖先节点所有控件对象,也就是说只要我们在创建对象的时候传入了this指针,就会在合适的时候自动释放资源,不需要我们手动释放了。这也就是为什么前面我们创建对象的时候需要传入this指针。同时,强烈建议在堆上创建对象,在栈上创建的话可能会在不合适的时候被销毁掉

当然只说的话可能咱们用起来还是有点心虚的,生怕出现了内存泄漏,作为一个C/C++ coder,应该总是把内存管理放在心上的,所有咱们做个实验看一看

实验的基本思路:自己实现一个类,去继承Qt提供的类,然后在析构函数中加上一行输出,让我们能够显示的看到析构的过程

1、文件-新建文件或项目:选择C++ – C++ Class

2、给这个类命名,然后头文件和源文件都会自动被命名,点击下一步-完成 被创建

3、实现类

.h

.cpp

运行结果:

1、能够正常打印结果:

2、关闭窗口之后,应用程序输出窗口显示打印结果qt界面开发教程,证明确实能够自动调用析构函数

所以只要对象挂载在对象树上,我们就不用担心释放的问题啦

Qt中的字符编码格式问题

在上面的实验中,我们发现使用std::cout打印出来的内容中,中文出现了乱码的情况。所有的乱码情况的原因都是编码方式的问题,在下,简体中文的编码格式是GBK,但是Qt中程序输出的内容的编码方式是utf8,并且似乎没办法更改,所以这里使用()这个工具来完成日志的打印

7. 输入框显示内容

同样的,使用编辑框也能够显示内容,编辑框分为两种:单行编辑框、多行编辑框

7.1 图形化方式实现

1、在控件中找到Input ,其中有Line Edit和Text Edit,这里我们以Line Edit为例

2、拖动到窗体中即可,双击可以输入需要显示的内容

3、运行结果

这是个输入框,所以里面的内容是可以进行编辑的

7.2 纯代码方式实现

使用代码创建就需要用到类

8. 按钮控件

同样的可以使用按钮控件显示内容,这里使用最普通的push 来实现

8.1 图形化方式实现

1、在中找到Push ,拖动到指定位置

2、运行结果:

8.2 纯代码方式实现

纯代码方式只需要在的构造函数中创建对象并设置显示内容即可

8.3 初识Qt中的信号槽机制

我们知道,按钮就是用来点击的,但是如果尝试了就会发现,我们创建的这个按钮点击了没什么反应,这是因为我们没有给这个按钮一个规定,被点击之后需要进行反应,如果想让一个按钮被点击之后出现一些反应,需要实现一个反应的函数,将按钮的点击操作于这个反应链接起来。

1、链接操作和反应

链接需要使用一个函数叫做,通过这个函数,指明了哪一个控件收到了什么信号之后,执行上面指令

2、 需要执行的反应

我们需要实现一个函数用于完成接收到指定信号之后需要执行的内容,使用去链接

8.3.1 使用图形化的方式实现

1、首先在窗体上创建一个按钮显示指定内容

2、在代码中添加

当然这个可以手动修改,但是一定要保证唯一。qmake在预处理.ui文件的时候,就会根据这里的生成对应的C++代码

8.3.2 使用纯代码的方式实现

同样的道理,首先创建一个按钮,然后链接反应

但是,这里出现一个问题,我们在实现的时候会出现一个问题,这个按钮对象是在构造函数中创建的局部变量,没有办法被访问到,所以我们选择把这个控件设置为的成员变量

上述的三个控件,我们都使用了图形化界面和纯代码的方式实现了,在实际环境中,这两种方式都很重要,我们的使用原则是那种方式更方便就使用那种。

9. Qt的一些小tips 9.1 变量的命名方式

在之前的学习中,我们已经了解,在给 变量/文件/函数/类 起名字都最好要有描述性,不要使用无规律的名字来描述

如果名字比较长,由多个单词构成,就需要使用适当的方式来区分不同的单词。

一般的区分方式有两种:蛇形命名法和驼峰命名法

使用的标准:入乡随俗,开发的项目是什么命名法,就使用什么明明风格

9.2 查询文档的方式

查询文档在任何开发中都是非常重要的,在中有三种查询文档的方式,我们都可以使用

1、光标放在需要查询的类名/方法名上,然后按F1,就会在右边出现相关文档

2、左侧边栏中直接⽤⿏标单击”帮助”按钮

3、打开.exe程序,其中内置了离线版本的帮助文档

9.3 Qt中的一些快捷键 10. Qt的坐标系

我们在之前的代码实现中,创建的所有控件都是在窗口的左上角的,但是在生产环境中,我们肯定不能把所有的控件都堆在左上角,那么怎么描述这个控件的位置呢?

使用坐标系

是的,在界面设计中,我们需要引入平面直角坐标系,但是这里的坐标系是一个左手坐标系

坐标系的原点是屏幕/窗口的左上角,这里的原点取决于父对象,如果没有父对象,原点就是屏幕左上角,如果有父对象,那就是父对象的左上角

例子:接下来我们创建一个窗口和按钮,使用坐标系来移动控件的位置

本节完….

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 【Qt开发】初识Qt

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们