04 创建第一个Qt程序

最新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对象呢,进入这个循环的机制了,无限循环不会让它一闪而过。
在这里插入图片描述
然后也相当于让代码阻塞,阻塞到这这行啊,就是让代码呢,阻塞到这一行之后,后边代码不执行,你比如后边你再写任何任意的一些代码,他都不会走到的啊,除非你点了叉子可能会走到这个代码,但是窗口已经不见了,你也看不到里边的东西了,所以说呢,诶,你要知道这个什么叫消息循环,就是呢,一直在捕捉你的消息,捕捉用户的一些消息,而不会让这个程序一闪而过啊好,也就是除非你点了一个叉子才能退出这个消息循环啊。
在这里插入图片描述
那么下面呢,我先总结一下这个第一节课程的一些内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值