04 创建第一个Qt程序
最新QT从入门到实战完整版
- 一、04 创建第一个Qt程序
来自
一、04 创建第一个Qt程序
好,那么刚才我们看到了Qt create的一单一些简单介绍之后呢,我们不可能只是对它进行一个简单的简介就完事了,接下来呢,我们要创建一个工程以后我们在使用这个QT的时候,基本上每个案例都要走这一套流程,所以说呢,我们接下来呢,去看咱们如何创建一个新的工程啊,首先呢,有两种方式,一种是直接点击new project,还有一种方式点击这个新建文件或项目啊,那我就点击这个比较快捷一点啊,
那么点击进来之后呢,它有一个模板在这里边,我们只用到会用到这个开发窗口中呢,会用到一个模板,就是这个叫QT的application,也就是在这里边有一个application选项啊,QT widgets application,那么它有自己的一个中文的解释啊,这个中文解释在这。啊,创建一个桌桌面的QT应用,然后呢,包含一个叫QT设计师的一个主窗体,就是默认的情况下,他就已经有一个窗体实现出来了,所以说。
你可以直接运行,直接就看到一个主窗体啊,然后下边呢,我们可以去,呃,点击choose是下一步的意思,然后cancel呢是取消,然后我们进行下一步。
那么点击下一步骤啊,创一个项目呢,有这么四个大步骤,我们一个一个去看,首先第一个叫项目的简介和位置啊,那么这个位置这这第一个你要先给他一个项目创一个名称,比如说我们先给他来个叫 first project第一个项目对吧,那么当然你看刚才我比如说在零一中啊,我想做一个这样的操作,空格他就给你报错了啊,你就在创业项目的时候不能有空格啊,然后还有呢,就是零一,比如说这第一天是吧,第一天啊也不能有中文,所以说呢,在创业项目中呢,不能有空格,不能有中文啊,你可以有下划线啊,比如说零一,然后下划线first第一个项目啊好。
然后下边再来看一下路径,路径这块呢,学习到今天咱们的路径下,比如说这个126班,然后咱们的send to student,最下边有一个QT,第一天扣的。好选择选择之后啊,这里边你会发现我也没有中文路径啊,那么如果这里边你出现中文路径的话呢,它不给你报错,不会给你报错,然后你点击下一步,一直创建出来项目之后,但是你运行出来之后,第一个窗口你都显示不出来,所以说这个东西呢,你自己要注意一下,不要有这个中文路径,这点很重要啊,因为有同学这个上课啊,忘了这些事儿了,没听到,没听到之后呢,啪写了一个中文路径,下边运行起来之后,代码都敲完了,啪运行不出来啊,那么就是因为你的这个路径有问题,所以说你的默认的窗口都已经创建不出来了啊,这个设置为默认路径的话呢,我就不设置了啊,因为这个设置默认路径大家应该也了解什么意思,就是下次你还在这个路径下边呢,去创建哪些项目。
你可以选择这个默认路径啊,如果不是的话呢,因为咱们每天的项目都不一样,对吧,今天是24啊,明天25,所以说我就不设置这个默认路径这一块了啊,然后在下边儿我们就这个项目的简介啊,就位置这块,我们做完之后呢,点击下一步。
下一步之后呢,有一个叫叫KK这块呢,是一个叫构建套件,有的同学可能用的是中文版啊,中文版后边会写着叫构建套件,什么叫构建套件呢。啊,那么在这个QD中呢,它还支持一些安卓的一些开发,如果你选择安卓版本的话呢,哎,那么这块呢,会有一个多一个选项,就安卓的一些配置环境,然后你去自己选择这个,对对它做一些选项,这是第一个啊第二个,呃,有的同学呢,可能今天这个安的是五点四点以前的版本,那么5.4以前的版本啊,和现在5.65.9这样的版本呢,它不同的版本代码上面有一些不一样的区别,区别啊,我们课上也会去解讲解一下低版本和高版。
的一些差异啊,那么当你去按那个低版本之后,你会你会发现诶,有些东西你必须要添加,然后才能去使用有些这个知识点啊,那么后边你会觉老师我也想用你的版本了,那那这个时候呢,你可以去不删除你的低版本,并且呢,直接安装一个高版本,在这个构建套程中呢,你就可以在开发中呢,去选择你的套件啊,你想用哪个版本去创建你的像啊,那么这个时候他就给你一个列表,你可以用5.6版本,5.9版本,你可以就安装多个版本,然后去在这个在这个界面中进行选择啊好,这是构建套件的一个一个用法啊用途。
好,那么下边呢,我们继续。再往下叫类的信息,你在创建一个QT的项目中的时候呢,它都会让你默认的去创建一个类,这个类呢,就是主窗口的那个类啊,但是这个类类名呢,我们先不看了,在这个基类中在就是这个类啊。
它有一个基类,这个基类呢有三种选择,这三种选择分别叫什么呢?一个叫Qmainwindow, qwidght,还有一个叫qdialog。他们的关系是什么样的一个关系?是这样一个关系。好,是一个继承的问题啊,这个qwidght是一个父类,然后呢,这两个是子类能理解了吧?啊那么什么叫父类呢?它是一个最简单的一个窗口啊,你创建这个种这种窗口的时候呢,一创建出来之后什么都没有,就是一个大空窗口在上面啊。
而Qmainwindow,它多了哪些呢?它多了一些叫菜单栏,也可以拥有这个工具,上边这些工具,包括下边这些状态栏啊,它都可以拥有啊,它可以多出来的东西,就是它这是一个派生类,可以比父类中多出一些东西。
就dialog这个单词不陌生,叫对话框,对吧,什么东西叫对话框。你这个咱们学了这么多的软件,你肯定知道什么叫对框,你看我现在一个东西叫对话框吗?是不是弹出来对话框啊,对吧,对话框一般呢,它这个里边呢,很少有这种最小化最大化的一些按钮,包括它一般会有一些选择性的按钮,比如说点击下一步啊,我点击这个取消啊,啊这这都是一个对话框的一些标志性的东西。
那么我们首先呢,先来创一个基类,就是这个空窗口,然后这个类名呢,你可以默认用它,或者说可以换一个名,比如我叫mywidget ,可以认为理解出来就是一个窗口的意思,在我们的设计中呢,基本上都会一直跟着一个单词打交道啊,就是mywidget ,这个叫我的自己的一个窗口类,那么这个窗口类写你这个单词之后,你会发现它会默认的给你添加一个点h.和点cpp。而且这个名呢,跟你的名一样,他都给你打好了,所以说呢,你只要给这个名,给这个类起个名,后边的东西你都不用去操心,然后这个是创建界面的话,就是刚才我说的这个设计这一块,你就如果你要选勾的情况下呢,它会给你多出来一个叫设计界面,然后你可以去直接拖拽一些控件,那我们一开始学习的时候呢,先不学它啊,先不着急去学这个创建这个界面,我们先用代码呢去实现一些功能啊,那么这块我们先不要这个UI的界面,然后下边呢去点击下一步。
下一步呢,我们就来到一个汇总的界面,汇总界面这一块呢,叫添加到版本的控制系统,这个干嘛使的呢?你看我这里边是没有的对吧?空的,这个就是在以后你的QT开发中啊,肯定不是你一个人在写一个大项啊,可能有四五个人或者一个小团队去写一个项目,那么这个时候呢,就需要用到一些版本控制系统,有一个叫SVN啊,然后VSS,git,这个大家有没有听过这些,比如这些版本控制系统有没有听过?啊,有的可能听过git 啊,有的听过SVN,对VSS用的比较少,那么这些版本系统呢啊,你会多多少少的需要在课技下对它做一些了解啊,应该了解他呢,因为呃看这以以后咱们在毕业之后,你可能在本中你是写一些自己这个工作经验的问题,对吧?那如果你要有工作经验的话,你肯定是对他们会有多多少少一些了解的啊,因为你肯定是团队开发嘛,商业开发。
那你会对这个版本控制系统有些了解,那那么简单介绍一下这个东西啊呃,SVN的话呢。我我用的比较多一些啊,这个之前在这个游戏开发的时候,那么SVN的使用的时候呢,啊,比如说a同学写了一些代码,咔咔咔写了几行代码,对吧,B同学呢,也写了几行代码,那么这个SVN呢,它就有一个叫代码合并的能力,比如说他们都在同一个文件中,都像这个a点点这个CPP文件中去写的一个代码,对吧,那他呢,就会在这个代码中把a和B呢给它合并起来啊,合并起来,但是啊,他检测的时候呢,比如说a写完代码,B呢必须要写到他这个代码之下才行,所以说呢,在a同学在写代码前的时候要注意一些事项,就是他先要做一个叫update。 update什么意思?更新啊,也就是你在写,你在这个写这个文件,对这个文件进行描写,写新内容。
之前你要先更新到最新的内容才行啊,如果你不更新到最新的内容的话,你没法保证你是不是已经和B写的冲突的代码了啊,就是B写的是前三行,你写的也是前三行,这时候有冲突了,那么如果B写的123好,你更新下来之后,123是不是就已经有东西了,那你知道有东西之后,你是不是就直接写456上了,对吧?所以说呢,这个呢,呃,虽然这个版本控制系统它是有合并能力,但是呢,你也给合并对了才行,那么有的时候呢,就忘这一步了啊,忘记更新这一步了,那你需要干嘛呢?你需要这个时候呢,他就给你报错了,报错之后你需要一个叫slove什么意思,解决冲突啊,就是你需要把这个东西,他会给你报一个错,报一个这个SNG,报一个什么错呢?a,他给你写个a写了什么什么代码,B写什么什么代码,然后他就把把这个名给写上去了,a和B,因为在这里边SVN使用的时候。
肯定是有自己的一个用户名的啊用户名,那么也就是说a用户名写什么代码,B用户名什么写什么代码,他都会告诉你,那那冲冲突了他也会告诉你啊告诉你之后呢,诶你你要知道之后,你就和B去商量啊,我作为a我就和B去商量,诶这样代码应该怎么去修改,然后B说你改吧,啊我这样代码你不要动,然后呢,你就接着往下写就行了,这个时候你就可以把这个东西改到正确了,之后123456通畅了啊通畅之后呢,你告诉SVN我解决了这个通突。写一个slove就可以解决了啊,那么这是一个一般使用的操作,那么slove完之后你还要干嘛呀。叫commit提交对吧,解决完通过之后呢,你还要提交你的这一个代码啊,就是这么几个常用的一些操作。
包括SVN内部呢,它有一套引擎的自己的一些bug,有时候出现一个叫lock 锁对不对,哎,他当出现他锁的情况下呢,你没法更新,也没法提交,什么都干不了啊,那就是他自己的时候,他出现了一个锁的一个这个机制,那么这个时候呢,你要在你的SVN的这个里边呢,要写一个叫unlock啊,要解锁,把这个锁给解开,然后你就可以正常的去使用了,这是SVN的一些常用的一些这个小的技巧,那么这个大家自己课下的时候可以对个SVN或者VSS和GIT呢,你只要对一个有一个较深的了解,其实这几个机制都差不多,所以说呢啊,你多少了解一个就可以了啊。
好,这是我们版本控制系统,我们这里边儿五天课程里边没有什么大的项目需要团队开发的,所以说我们也不需要呃安装这些东西,对它有一个了解行为,然后下边你来看一下这个啊。
这里这个框里边画的东西,就是我们待会儿创建出来这个项目之后,他会给你添加哪些文件,第一个点pro文件,这个pro的英文单词就是project pro工程文件,这个就类似于咱们在VS中啊,有一个叫sln的文件叫点sln,叫解决,解决这个项目通这个解决方案是吧?解决方案你是不是双击这个东西就能打开你的那个VS项目呀,对吧?好,这个点pro也是一样,工程文件你可以双击这个文件整个把你工程打开,这就是咱们创建工程之后,它给你生成文件,然后点CPP文件呢,是你的程序入口啊,就是你的程序mywidget的点CPP和mywidget的点H,是不是刚才我起的名啊,对吧?我自己起了一个窗口,这是窗口的一个点CP和点H文件啊,它会给你创生成这么几个文件,好,下边呢,你就可以点击完成了。
点击完成之后,你可以看到左边是不是就刚才我说这四个文件对吧?那么这个文件呢,它是有这么一个格式的,也就是上最上面是你的项目的一个文件夹啊,里边呢,包含你的这个点PRO啊,还包括里边的一些具体的头文件和原文件,有的同学觉得不喜欢看这种头文件文这个原文件的一种区分的话呢,在这个里边,在这儿啊,看一下过滤器有一个叫简化树形视图,你可以点击之后,你发现下边区分的文件夹是不是就没了,对吧?啊,一般来说我都喜欢用它,因为这样的话你会很清晰看到哪些是头文件,哪些是原文件啊,如果你要不喜欢看,所有把所有东西都放在一起,你可以简化它啊。
第二个,你就可以在这儿有一个叫分栏。啊,你可以选择这个左右分了,左右分了啊,那比如说这个项目呢,比如说这右边的项目是我的代码,你可以呢,调整到这一块,我的代码对吧,然后左边呢是你的代码,你可以照照着我代码呢去敲东西啊,就可以用这种分栏的方式啊,那么分栏呢,可以进行删除的啊,你看这样就删除掉了,刚才我点了一个这个啊,这样删除分栏一点就没了啊,这是分栏的一个操作啊,
那么下边呢,我们先来简单的介绍一下main函数,是程序的入口呢,都是从那开始走的啊,我们先来看一下,第一个include,一个my.h这是包含头文件,这就不多说了啊,那这是我自己写的,一个叫my.h,第二个叫QT application叫包含。包含一个应用程序的类的头文件,那么q application呢,就是应用程序这么一个类。
下边main函数不说了,是咱们的程序的入口啊入口,所以入口地址呢。那么这两个参数还记得是什么吗?一个叫int ARGC,还有一个char *ARGV在C语言中应该是介绍过吧。ARGC是命令行变量的数量,而ARGV呢,这是一个数组叫叫命令行变量的数组。那么就是在程序中啊,你对这个程序有各种各样的操作,比如说鼠标点了,键盘敲入了,都是从那函数中呢,这两个参数接收到了这些命令。
而下面的代码中呢,他把这些命令,都放到了一个叫Qapplication这个对象中,也就是你接到的鼠标啊,键盘这些命令呢,都放在下边啊,那么谁这个QA是什么东西呢?就是叫应用程序对象啊,就叫一个a应用程序对象,而这个在这个QT中。应用程序对象有且仅有一个,这个对象呢,只能有一个,而且呢,还必须要有这么一个对象存在啊,这个是核心的一个对象叫应用程序对象。然后有且仅有一个,你不能创建多个这个对象。然后下边mywidget这什么意思啊。通过一个我刚创建一个类,创建出来一个对象,通过我的类来实例化一个对象,那么这个对象呢,就叫什么呢,就叫mywidget窗口对象啊。
还记得mywidget的父类是谁吗?就是他的父类是谁。就是叫q widget。那么它的父类叫q widget就是一个空窗口,就是一个空窗口,那么这个空窗口也就相当于你按照空窗口来实例化,派生出来一个叫mywidget这么一个窗口来,然后声明出来一个对象。这个对象它调用了一个叫show方法,它调用了一个叫show方法。那么也就是说窗口对象呢,窗口对象默认不会显示,必须要调用show方法来显示窗口。
注意窗口名称!比如说我给它注释掉,注掉之后呢,代码没有问题,语法也没有错误,但是呢,窗口就是不出来,你看下边都什么都有了是吧?这个东西运行起来绿色也都有了,对吧?但是呢,窗口就是没有啊,这是因为你没有对它进行一个显示的功能。
最后呢,叫rereturn a.exec。这个就是让程序对象,让这个应用程序对象,也就是刚才说的这个a,啊这个a。进入消息循环机制,进入消息循环,这个消息循环是一个机制啊,这个机制是干嘛呢?就是你可以认为这就是一个死循环,这个死循环怎么说呢?
比如说我写一个while循环,我写一个假的代码while (ture)if是不是就给死循环了,对吧,那么这个死循环什么时候才能退出去呢?比如说我写一个叫if点击了叉子,然后呢,我就break掉。那么这样的话呢,就什么意思呢,大家来看一下,我先把这注释掉,先给它注掉,注掉之后运行一下。你会发现啊,我这个代码并行点之后,并没有窗口一闪而过,你发现了吗?没有窗口什么叫一闪而过,就是啪显示完之后就没了,我们通常会写system pause。为了防止什么,就是为了防止它一闪而过,对不对,你会发现这里边代码是不是没有没有这样的代码,但是他也不会一闪而过,这个就相当于进入一个叫消息循环,一直在等待用户的一些所有的消息。
比如说你对鼠标双击或者说移动,它都会捕获这些消息,然后进入这个循环的一个机制,无限循环,什么时候退出这个机制就是在这儿,我什么时候点这个抓点击插到了,他break掉就出去了这这就相当于让这个a对象呢,进入这个循环的机制了,无限循环不会让它一闪而过。
然后也相当于让代码阻塞,阻塞到这这行啊,就是让代码呢,阻塞到这一行之后,后边代码不执行,你比如后边你再写任何任意的一些代码,他都不会走到的啊,除非你点了叉子可能会走到这个代码,但是窗口已经不见了,你也看不到里边的东西了,所以说呢,诶,你要知道这个什么叫消息循环,就是呢,一直在捕捉你的消息,捕捉用户的一些消息,而不会让这个程序一闪而过啊好,也就是除非你点了一个叉子才能退出这个消息循环啊。
那么下面呢,我先总结一下这个第一节课程的一些内容。
04 创建第一个Qt程序相关推荐
- Qt入门01 创建第一个Qt程序
一.安装Qt及Qt Creator 1.Qt下载地址 常用的工具也在这些地方可以找到,当然也可以直接官网下载,考入到网速因素,国内的镜像源网站还是要更快一些.Qt 5.15 之后已经不提供离线安装包了 ...
- Qt——P1 创建第一个Qt程序
#include "mywidget.h"#include <QApplication> //包含一个应用程序类的头文件//程序入口 argc命令行变量的数量 argv ...
- 使用eric6创建并运行第一个QT程序
创建第一个QT程序: 点击new project 项目名:test 保存位置:D:\eric6space\test 选yes. 选OK. 保存位置中自动生成如下文件 下面开始创建QT端的UI文件: 选 ...
- 【Qt】第一个Qt程序
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 编写Hello World程序 04. 编译运行程序 05. 预留 06. 附录 01. 概述 QtCreator作为Qt ...
- QT学习——Qt工具介绍,Qt助手使用,第一个Qt程序,Qt字符串和字符编码
一.Qt主要工具介绍 1)qt助手(assistant) 2)qt构建器(qmake) 3)qt设计师(designer) 4)qt转换器(uic) 5)qt资源编译器(rcc) 6)qt元对象编译器 ...
- C++桌面应用开发(Qt学习)--Qt简介及第一个Qt程序
Qt简介 历史: 1991 奇趣科技 优点:跨平台:接口简单,易上手:简化了内存管理操作 成功案例:Linux桌面环境:WPS:谷歌地图等 创建一个Qt程序 点击创建项目后,选择项目路径以及给项目起名 ...
- 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序
在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...
- (转)WCF教程系列(1)-创建第一个WCF程序
作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观 但是它却是我们开发分布式程序的利器 但是目前关于WCF方面的资料相当稀少 希望我的这一系列文章可以帮助大家尽快入门 下面 ...
- 第一个程序(python)-helloworld_创建第一个python程序:‘Hello World!’
安装好python解释器就可以创建第一个仪式程序Helloworld了 1.Python程序的3种运行方式 1.1.Python解释器直接运行 在Windows或者Linux命令行输入python,进 ...
最新文章
- 线上接口经常超时,我用线程池+ FutureTask解决了,YYDS
- php实战第二十一天
- 七十七、SpringBoot整合Rabbitmq
- 初次使用 Elasticsearch 遇多种分词难题?那是你没掌握这些原理
- 我的常用软件大公开!
- 昇腾AI处理器软件栈--张量加速引擎(TBE)
- 【C语言】删除元素(函数,数组的扫描)
- 面向对象PHP之Clone对象
- C++11中内联函数(inline)
- 改变ALERT组件的背景色和背景透明度.
- 21世纪需要的七种人才—李开复
- 什么是物联网?物联网与互联网的区别是什么
- LeeCode(C++):买卖股票的最佳时机
- CPU卡指令返回错误集
- TouchBar Dino for mac(TouchBar上的小恐龙跑酷游戏)
- 最新炫酷恶趣图制作神器小程序源码+支持流量主/功能强大
- CSS复合选择器---后代选择器、子选择器、并集选择器、伪类选择器
- 电脑无法升级windows11的解决办法
- 将一个长字串分拆为多条记录
- 微信浏览器字体调整 PHP,如何针对微信浏览器的调整字体大小功能进行适配?...