粉丝6获赞65

好,那么同学们啊,今天的话呢,我们就是给大家呢开个头,呃,我们接下去的课程的话,主要是学这个叫做 qtqt 啊,那么 qt 的话呢,我也给大家简单的介绍一下,有同学可能是没有了解啊,那么,呃,我们要知道 qt 它是一门语言吗? 回答一下算是吗?不是啊,不是不是啊,答案不是啊,为什么呢?因为他只是一个,只是一个酷, 只是一个酷而已啊,那么这个酷是什么呢?这是一个封装的 c 啊,加加的的酷啊,那么实际上也可以说是封装的酷的话,我们一般来说都可以说成好像 一个框架一样的框架,一样的框架啊, qt 框架对吧?啊,那么类似的啊,类似的风装 c 家家的裤还有什么呢?还有啊, mfc, mfc 啊,这也是封装 c 家家的库,那么这个库的话呢,是微软的啊,这个是这个是微软的,微软封装的,微软公司,大家都知道的,对吧?那么这个库呢话呢是呃 q t 的这个库的话呢,他是谁谁呢? 呃,原来是诺基亚的,我记得啊啊,后面是被收购了,我们来看一下啊, qt 原来是谁?什么啊?看到没有,他就是叫做应用程序框架对不对?首先定位就是个框, 讲并不是语言是吧,现在像拍摄的话呢,我们刚刚提到的就是啊,他其实呢,呃,也只是一个脚本解释程序而已 啊,那么我们这个写拍摄的人,因为觉得他好用吗,然后写了很多东西,所以习惯性叫做拍摄语言啊,那本质上也是一个教本解释程序,那么一般来说,我们一些这些语言的话呢,都是具有这种编意性啊,编意编意成什么的,一般来说这个要更加大一点的啊。 嗯,那么现在的话呢,我们其实很多交会程序也是非常强大的定做的,那么这个最早的是哪个公司的?看到 啊,诺基亚吧啊,被诺基亚公司收购的,哈哈。那再早一点是什么?没写啊,已经他的历史 他历史再看一下,看一下他的第一届呢,这是某某,估计是一个组织一样的东西啊,来开发的 qt 有个公司之前成立了,然后呢后面是一个基金会啊,哒哒哒。 一开始的时候估计是是像一个小小小团体啊,对吧,就像你们现在这个小团体啊,以后有可能会发明某一种语言,哈哈哈。啊,那么我们来看到啊, 呃,研发公司是属于 qt company 啊,原来的,那么后面是被诺基亚公司收购的,也就说后面的话呢,我们诺基亚手机我们早期的那块摔不坏的那一款啊,很强的对不对啊,怎么摔也摔不坏的砖头,那么 这样里面就有这个 qt 的这个框架啊,啊,对吧,因为被他收购嘛,那他肯定多多少少是要去使用的对不对?好,那么 呃首先我们定定位啊,这个地方是 q t 公司啊, q t。 康复内对吧?公司康康内啊康复内。那么这个 q t 我们要来有什么用 啊?有什么用?笔记做好自己,就这只大老一样的。这个听着啊,大老爷们的啊,这个有什么用呢?他本身有什么用呢? 他本身的话呢?呃,其实就是因为他是个酷吗?对不对?既然是个酷的话就是封装了好多好多的函数啊,那么就是方便使用而已,对吧?就方便方便使用这个 c 佳佳啊, c 佳佳,那么他更大的 还有提供的一个好处,就是啊,帮助我们干什么呢?进行可视化开发,可视化开发,那什么意思啊?我们可以利用这个工具叫做 q t crate 来进行可视化开发。 q t crate 啊,进行可视化开发, 那么这个叫做 qt 啊, c r e a t o r 啊, 用它来进行可视化开发,我们就相当于就很简单了,感觉好像未必这拖一拖空间就可以了,对吧?啊,那么呃,实际上的话呢, 可视化开发只是一个辅助工具而已啊,这个仅仅只是一个辅助工具,我们要知道的是辅助工具啊,辅助工具,那么我们本质上是什么呢?本 之上啊,还是什么呢?调用这个 qt 的库来生成界面,也就是我们可以完全存代码去写我们的这个,哎,一个写出界面来啊,然后呢就写出一些各种各样的空间,就像我们的 htmp 一样, 对不对? gs 一样,这个就是类似于这样的啊,纯代码界面可以去写啊,那么本质上就是用这个酷控件啊,酷的控件, 那么我们 qt 的话呢,我们首先啊,完成之后,我们先来看一下他到底是怎么样的,我这个地方是安装好了一个 qt, 那么后面的话呢,我要教大家 跟大家讲一下这个地方啊,如何自己要去,回去之后在自己家里的电脑上面安装好啊,那么我们默认打开好啊,安装好之后 的话呢,我们其实是这个地方,他会提供这一个可视化的一个开发工具啊,可视化开发工具,你大的那个包里面是有的, 那么呃,也有一些安装好之后,就是也有些没有包含这个安装工具的一个包,比如说你安装的时候没有包含,对吧?没有包含,那么这个没有包含,就像我们的这个拍损当中,呃,没有这个,没有这个包,没有这个包啊,一开始没有,那么后面的话呢,你要去添加一个叫做 q t d 三个, 那么这个东西就叫做 qt 点赞用,那也就是说我们的拍审这个语言当中,对吧?他有一个叫做呃, py qt 五 啊,这一块的话呢,他其实就调用的是 qt, 第三个就是调用的是这样的一个界面,调用的是这样的一个程序啊,然后我们就可以 相当于直接在这个程序上开发完,开发完成之后呢,我们拍摄有一个转换啊,有一个转换可以把这个 qt 的这个代码转化成拍摄的这个代码好了,那就可以直接 就可以直接用了,拍摄里面就可以直接用了,也就说你这一块是跟拍摄也是通的,哎,也是通的啊,可以直接转换。大家没有看过我的呃 q t 五的一个高级教程,对吧?啊?在我的拍摄高级应用教程当中专门讲到 q t 五的开发啊,其实就是针对这一块 啊,那么呃这个里面的话呢,我们看到是有有工程,对吧?大家可以看简单看一下我这一块之前开发的一个电池电压的一个项目啊,看看这个地方还能链接过去啊,那么这个地方的话呢,打开之后 啊,我们看到的是有分成这几块,那么 c c 语言对吧?或者 c 加加语言,这里面默认。其实我们在我们这个是使用 q t 的这个软件啊,其实还有一款软件叫做,呃, vs 软件, vs 这个地方我没有装好啊,用 vs 啊,我们现在维修斯的六啊,维修斯的六并不是 vvs 扣的。不一样的啊, 维修斯六六这款软件当中我们可以开发 c 家家,对不对啊?是那是微软开发的啊,那这个就是,呃,现在我们可以说是我记得比较牢的就是诺基亚,对吧?哈哈哈,那么我反正现在是属于,那因为被他收购的肯定是属于归他所有, 对吧?那么他这个地方我们每新建一个 c 家家的程序的时候,他就会出现这三块啊,一块叫做 head 头部,头部头文件, 也就是啊,嗯,头文键,这个头文键里面一般包含什么呢?包含很多我们函数的名称,就像声明,也就说我们所有 c 家家语言当中啊,我们,呃,我们或者 c 语言当中我们在使用的时候, 我们需要将我们自己写的一个函数,比如说我们现在 gs 当中,之前还是飞机大战的时候,直接翻过去一个函数的名称,对吧?好了后下面定义好,我们就直接可以调用了,对不对?但是在这个 c 元 c 家教当中,我们就必须还要将我们的这个函数名称 加他的括号这些参数啊,后面最后以分号的形式结尾啊,我们就函数体没有啊,这样的一个整个整个名称在哪个位置声明呢?在最上方啊,在最上方声明,最上方声明文件的 最上方声明,如果说你没有声明的话,就意味着他还是无法去调用啊,因为他是代码从上到下开始读的,除非你把这个函数写到这上最上方定义所有的函数翻过去定义写到最上方,那你就可以去调用 啊,这个就是很大的区别,这个也是由于,呃,很多人就是少少使用这个习家家的语言这种来去,比如说是做某一个应用程序,对吧?就是因为很多东西啊,你会发现他比较麻烦 啊,但是 q t 的话呢,已经减少了很多麻烦了,因为已经封装了很多 c 家家的这些代码,对吧?你如果纯使用这些的话呢?就像我刚刚这种模式,我刚刚跟大家所说的这种模式啊啊就比较麻烦,对吧?那么 q t 的话呢,就可以很大程度上我们解决了这样的一个问题,但是呢还 是要存在文件包含性的一个问题啊,要包含,那么这个呢是所谓的头文件,所有的头文件,所有的头文件记录下来他都是以点 h 作为扩展名 啊, head, 对吧? head。 那么,呃,这个上面有一些很多预定一的这些程序啊,这个 qt 里面已经给你预定一好了。那纯西家家语言你去写的话呢?是没有的, 全部你自己去写啊,当然这些东西都是我后面后面自己补上去的,对吧?很多东西都是自己补上去的,创建完成之后这些东西都要自己补上去。我们看看这个程序长得怎么样啊?呃,我开发的一个一个一个电池电压的一个程序啊, ok, 应该是能够跑起来的。 然后就是这样的一个界面,大家看到我这里其实界面是没有的,我是纯代码开发的啊,没有的,对吧?这里直接是 c 家家 cpp 这个语言,对吧? 没有的啊,就是直接是属于呃纯代码开发的,呃这样的一个程序,对吧?大概大概是也差不太多嘛,下危机什么的,什么个意思啊?也相当于你监听端口,什么个意思呢?我开启一个监听的话呢,我就可以获取远程的这个数据了,比如说我去获取真真家具的这种数据, 对吧?监听端口一打开他所有的数据都就就过来了啊,那我这个地方呢是获取什么呢?获取获取这个呃电池电压的这种数据啊, 等等啊,那么这个地方什么采样器啊什么的,同样的我们可以做一些右键启动啊什么的,对吧?等等的啊,比如说也能够做一些很好的这种数据啊,这种数据的模拟, 对吧?这种数据的模拟,那这些图的话呢,要求同学们都是要自己能够会去写的啊,模拟图,对吧?我们比如说我们 实时的将我们的这个光照,光照这个情况获取过来,这个数据我们要能够给他生成这种图形,包括这种图形的话呢,我们也是能够在我们的网页当中也是能够去做的啊, canvas 啊,我们就可以去做,对吧?画图啊,画图工具, 那么呃我们这这其实就是一种比较简简单的简单的一个啊, q t 的一个程序一个界面,对吧?那么这个我现在装的这个版本呢叫做什么? windows 版本,对吧?因为这个 q t 的话呢,它是有一个特性啊,它这个 好处呢,他这就是跨平台的啊,跨平台的,跨平台的,他是跨平台的,那么就 就意味着我们这有有这个什么温德斯版本,对吧?那也有这个,呃呃,六六个四版本啊,六六个四版本,那么我们到时候呢?在我们的这个开发环境上,环境上面啊,比如说我们要开发这个 相关的下位机,去获取我们的这些智能家居数据的,那么这个时候我们是在 obantu oubantu ubandu 这个 linux 服务器上面啊,我们这个地方,比如说我们举例就是一个乌班图 uberantuuubuntu two 是怎么写的 啊?忘记了,哈哈哈哈,乌斑图写中文吧啊?翻译一下就是乌斑图 乌邦图吗?乌斑图吧,乌邦图啊,那我这样吧,查一下吧,乌邦图 我帮 too 啊 t u 吧,应该就是应该写的是对的啊, 般啊,你看就这个对吧?就这个啊,我记忆还是不错的啊。啊,那么这一款呢,也是属于零六克斯开,就是相当于是一个像一个型号一样的,对吧? 那么我们,我们也就是说我们要学会啊,这个不班图的这个零点服务器的一个基本使用,比如说我们如何去复制文件,如何打开目录,如何在上面去编辑 啊,那么呃,与此同时我们学会在这上面如何呃共享文件对吧?共享服务器怎么去搭建 ftp, 你比如说你,你怎么去给他开启,那这些都是基本操作,所以说我说上次,呃,有有 有其他老师在上课的时候,大家可以旁听一下,大家都会学会了,对吧?下次我就不需要讲啊,其实我也我也当然要给大家去讲这些东西,这些都是基础啊,对于我们这里来说应该是基础的基础啊,我们更重要的是做代码的一个开发,对吧?啊?所以我们这个边,我们这个地方的话难度是比较大的啊,具体的一些东西在做的时候, 大家要要花比别人努力十倍的时间去完成,才能够成长的更快啊。那么 无斑图还是无帮图啊?中文反而到错了,哈哈,不不写了,我们就这样吧,那么也就是说到时候的话呢,是在这个地方地方啊,两个平台我们使用的时候在这个平台 平台上面使用,那么这个平台我们上面使用的时候的话呢,我们把这个平台是装在虚拟机上面啊,装在虚拟机上面直接去使用的,那么我这个地方当然 我们也可以直接装在 windows 上面。呃,如果说我们自己家里面的话呢,我们可以直接装在 windows 上面,当然啊,就是说我们同学们也可以直接拷贝一下我们给出来的这个资源啊,一个叙利级文件,然后呢直接装到叙利级,然后叙利文件宰出来就可以了,就直接装好了,都不需要去装了,一共大概有十来个 g 啊, 十来个 g, 那么这个其实这个也也不小啊,你要单独去装这个装这个东西的话也不小啊。啊,你看到啊,好像也有,也有很多很多个 g 啊, qt, 那个这个 qt 文件夹就是我我我装的,装在这个地方,对吧?你看看有多大,有好大,因为这里面的话,我我这个地方我我宰了好多的,他的一些空间支持库等等,对吧?所以他这个地方其实也很大,估计也有个十来个鸡了,所以还是比较大的,大家要准备 大概可能二十个 g 啊。二十个 g 要有,对吧?就比较大本身其实他就比较大啊。 啊不不宰了啊,反正就一直会加吧,大概大概加到十来个 g 吧,印象当中是这样的。那么呃这个地方下载我们该怎么去下?他是一个开源的,当然是免费的,对不对?我们可以直接去下载啊,我们直接搜索一下就可以了啊。呃这个叫做 呃叫做 q t 呃就直接 q t 就 q t。 好像是有个档文件呃这个这个官网你进去是找不到的。 呃到这里啊这个是一个文档到这个啊这个这个这个看到没有?有个档 点 qt 点 io 这里面去找到相应的这些 qt 的版本,然后呢直接就可以下载啊,他是他是开原的嘛对吧?啊直接可以下载各种版本啊,很多版本那包括跟我们训练机同样的这种版本啊。都有啊,我们就下载最新版本就可以了 啊那这里面呢?这个地方这是 windows 上面的啊那我们这不止 windows 上面啊,这有很多的,你可以点赞点进去啊 啊然后呢我们这个地方有个这个新新新狗叫单独的一个程序,你看这个是那那个是上面的对不对?这个是 l v 啊啊 v 的上面的啊。那么你这个地方感觉好像不大啊,只有一个机左右, 一个级左右吗?啊可能可能还只有四百可能这个文件可能还不一定全啊。我们来看一下我这个地方呃我这插件还脏了很多对吧?这是我这地方是我寻思四点八版本的, 我们欧巴看一下啊,五点一二,对,我这里装的是大概是这个版本五点一二的 q t, 五点一二,四点八,对吧?我们来看一下啊,也就说,呃,在之前的时候我们看看我这个四点八大概是有多大 啊?那么比较慢,大家呢?进去之后我记得,呃,我我们这个地方啊,就是说我我 之前是有个 exe 程序的啊,他现在可能最新的这个版本又更新过了,又不一样了啊,那么基本上我们能装上的话,能直接能用就可以了啊, 那下载的位置就是从这个位置那不同的版本他不一样的,大家可以进去之后呢自己去看一下,那这里面我们具体就不多讲,好吧。啊,不多讲,那么我们下载应该会了,对吧?要找到的是这个记一下啊,档点 qt, 点 io, 直接把这个记下来就可以了,我把它它复制一下, 这个就是下载的一个跟目录下载 下载,呃,可以用最新版啊,也可以就是用我的这个版本,我的这个版本我感觉用的还好啊,有,当然最新版不一定是最好的,对吧? 就不一定是最好的,呃,我们要知道的是啊,温特斯上面我们现在写的这个版本啊,就是说我们,呃是无法移植到我们这个虚拟剂上面的啊,会有各种问题的 啊,会有很多很多的问题的,那么也就是说,呃,我们也可以直接拷贝一下我们学校我们这个地方给大家提供的这个虚拟机里面这个版本啊,那这样的话呢,对大家来说安装上面就没有什么难度 啊,那虚拟机我们这个地方就使用 vmvr 都知道吧? vmv 啊,这个虚拟机下载一下就可以了啊。呃,这这 vmv 公司的虚拟很多的,对吧?那这这这个呢? 对吧?这下载地址都有了,对吧?啊?直接安装就可以了啊?啊?破解版本都是啊,当然如果说同学们以后想要投入生产的话呢,还是要使用正规版, 对吧?啊?那么我们来看到啊,看到这个地方,呃, 现在我们下载完成之后,我们比如说该如何去新建一个项目,对吧?我们来完成第一个项目, ok, 我给大家演示一下啊,打开 好了之后的话,我们就会出现这样装完之后会出现这样的一个 qt 的图标,我们装如果是 windows 版本的话,对吧?当然所有的开发的思维思路是一样的,主要的代码是一样的,当我们进行移植的时候可能会进行小小的更改,有有一些个别的代码要进行更改 啊,但是不能,呃,不能就是说完全不更改的情况下就马上能用,这是没有的啊,而且各个版本啊,他所支持的这些库 一些一些代码会有点不同啊,就像我们现在我这个地方是使用 qt 五,对吧?我们呃另外一个环境使用的是 qt 四啊,这两个代码啊,我们在比如说开启骚 t 的这种用法的时候是完全不同的 啊,是完全不同的,当然你在我们这个位置可以去采用 qt 五,里面他是兼容 qt 四的, 我们可以采用 qt 四的写法去写,但是你我们我们在我们我们这个现在因为是属于 qt 五的,也比较标新了, 我们不是看到五点几这个版本吗?对吧?这就是 q t 五的核心,就是 q t 五的,那么这个 q t 五我们上面的写的这个代码,呃,我们像一些语法逻辑,那移植过去的时候,那就会出现问题,那这些代码我们只有进行修改才可以啊。所以我们一般来说开发之前 这样选择好,到底是选择 qt 五还是选择 qt 四啊?那么,呃,很多比赛的时候的话呢,基本上是用 qt 四比较多啊,那么日常的开发的话呢,用 kt 五比较多啊。 好,我们来看一下新建一个工程啊,新建一个工程,比如说我们新建一个 new project, 对吧? new project 一个工程,那么最简单的话呢,反正就是新建一个 opla k 旬,我们如果说下载这个版本的话, opla k 旬就可以了。创建一个 q t 的一个桌面类型的一个版本,那么这个是属于什么呢?这个是康索 康守,康守的话是像像命令行一样的命令提示服一样的这种,对吧?哎,就你运行出来到底是一个什么样的一个东西嘛?哎,这个这个威胁词的话,就是实际上就是各种各样的桌面端的一个主见啊。我们也同样可以用 q 来,比如说写很多的什么类,类似于贪吃蛇啊,游戏也可以能够写啊,那无非就是组建的一个组建怎么去使用嘛?空间怎么去使用嘛?就像下一次我,我跟你说,你能不能用这个网页,用 js 去开发一个贪吃蛇, 那是不是也是控制这个 div 而已啊? div 是不是空间这个地方,我们 kt 是不是也是空间控制其中的?比如说一个 labo 空间, 对不对?雷宝空间就像我们威逼一样去控制一个雷宝空间,同样的道理啊,同样的道理啊,那么这个地方我们新建的时候呢?微句词我们这个地方一个理解啊,微句词其实就是窗体, 其实就是一个窗体啊,我们理解就是理解成一个窗体啊,那么这个地方我们 oplacation 的话呢,就是新建的,是那么多,对吧?呃,然后这个地方利用他的这个 工具的话,其实我们还可以,好像可以用拍摄,也可以变形,那这个地方的话我使用的是 c, 我们这里面好像只有是 c 加加啊,但是我们这款工具的话,好像使用的是好像直接可以使用拍摄变形啊,对,他也支持的啊,也支持的 哦,我们那么这个地方下面有很多,这些地方基本上是没有用的到啊,这个地方有个 get, 大家可以呃呃,客户去了解一下啊,我们可以把我们自己的一些项目开源到网上的这个 get 平台上面,对吧?那这种 大家可以自己私下里去学一下。那如果有必要的话呢,以以后我也给大家去讲啊。那么像这些东西啊, no project 跟这些啊,这些这像,这个主要是属于团队化开发啊, suvs 啊,团队化开发或者版本控制这些东西,对吧?你也基本上不用看啊, 这个呢, nonqt project 这个地方是什么呢?就是建立单个文件的时候,对吧?建立单个文件的时候使用,那一般来说我们也不会在这里使用啊,很少使用在这个地方,当然也会后面有可能。那我们后面绝大多数在使用的时候会使用什么呢?会使用 一键一次,一次新建的时候他同时会新建三个文件,一个文件是属于 qt 界面文件,第二个文文件是属于 c 加加文件, cpp 的第三个文件是属于头文件 啊。一般来说我们在这个地方界面上开发的时候,我们就同时会新建三个文件,待会我会给大家马上演示出来啊。那么 大家看到我的这个项目,我的这个项目有几个文件?拜托人刚看到的时候看到一个 h 文件,还有看到一个 cpp 文件,最后一个是一个最 资源库啊,资源库就是我要调取的图片啊什么的啊,这个资源库是我们另外增加的,这个不算文件啊,所以就相当于是一个资源啊,资源库 资源的一个集合,那么我们在这里面的话,我们直接点击 nupro 加就可以了,对吧?打开新建,新建的话这些是属于设计的,对啊,设计的都都是属于单个的啊,那么我们想要集合的 全一点的,那么这个地方是属于开发一个酷的,对吧?这些一般来说我们在这个位置现在也不需要啊,我们只需要的是第一个 plak 群啊,当然我们 q t 四里面会有点不一样,大家新建的时候会有点不一样,但是大同小异啊,大同小异,我们这个地方讲的时候,以这个 q t 五的这个地方来讲啊。 呃,我们接下去的话呢,是打开这个窗口嘛,就相当于是我们创建一个项目应用程序, 这个应用程序是一个窗窗口的一个应用程序,对吧?我们不是在我们的这个嵌入式开发的那个有个 a 八那个像像手机一样,手机平板一样的那个东西吗?这上面是不是我们其实如果是创建的是这个应用程序类型的话呢?就意味着我们这上面可以看到我们的界面, 就像我刚刚的这个界面,我把它要是稍写到那个东西里面就看到的像刚刚我给他展示出来的这个界面一样的啊,展示出来的界面是一样的,那么,呃,如果说是这种康守的话,那就是一个黑屏了, 对不对?输出的一些日制黑屏的这种,这种吧,那一般来说我们可能输出这种展示型的这种界面会比较的多啊,就像我们把我们的 qq 刷写到这个平板里面去也是一样的,对吧?只不过这是相当于好像一个系统一样,刷进去之后我们打开之后就是他,那就就是个系统,对不对啊?就是个系统, 就是说就像我们不是那个平板,我们不是说过吗?我们把安卓的那个安装程序刷写进去,那他打开的就是一个安卓系统啊, 对不对?我们把我们的程序写完之后稍写进去,那打开的就是我们自己写的这个程序啊,这就是嵌入式的一个开放。好,接下去我们来,哎,下一步 啊,就就直接直接选择他去死,对吧?点击选择他,选择他之后我们接下去要创建一个什么呢?叫做项目文件啊,我们要选择创建好这个路径,这个地方还有个勾,有个勾,这个勾是什么?一个意思啊?就是说这个勾如果勾上,那么你下一次再创建 新的项目的时候,他就会默认显示你上一次创建的这个项目的路径啊,如果没勾上,那就反正就就不显示了,就是会显示成这种东西吧,对吧?那么我们这个勾起 其实这个地方也不用管他啊,不用,不用管,那么我们比如说 test 啊,就测试啊,我们的这样的一个程序啊, 好,接下去我们这个这个程序的路径,比如说我们把它创建到我们的桌面上啊,桌面上我们创建一个,桌面上我们新建一个啊,这个 ljy 吧啊, ljy 里面这个文件夹里面,我们待会会有一个 test 的这样的一个程序,对吧?项目文件啊,我们现在点击下一步, 那下一步的时候我们就这个地方,因为,呃,我们 q t 在安装的时候是这样的,我们这里面其实就像有一个呃,就像拍摄一样要安装它的解释器,对不对?那么 q t 的话呢,这个地方其实安装的是 q t 的,叫叫做变异器 啊,变异器,那么这个,嗯,变异器是什么呢?就叫做这个啊, mgy, 我们安装的是这个,当然变异器还有其 其他的啊,还有还有其他的,那么这个编辑器的话呢,其实就是 c 家家的编辑器一样的啊,其实就是把我们的 cpp 文件头文件这些东西组织起来,把它编辑成 什么点欧文件啊,等等啊,点欧或者这种啊,像这种这种编意过去的啊,是比较底层的 点或者点 so 或者这这种类似于这种文件啊,那么我们可以看一下啊,变异过去的这个其中的一个,比如说我这个地方,我这个项目不是已经变异过了吗?我这个项目现在是在呃,我们现在直接给他打开啊,打开一个给大家看一下,打开一个看一下,我变异过去的, 让他讲到了这个变异啊,那么变异的路径的话,我们要自己要指定,那比如说我们我这个地方默认会指定 一个路径啊,变异在这里啊,那么这个地方是一个第八个,第八个里面就是我们变异的这个程序,你看这些都是都是点 o 文件,对不对?点 o 的点 o 的啊,那这个点 cpp 里面是你看不到我们的原代码的,都是一些呃,无用的代码 啊,看到的,那么我们就是点欧的这个文件啊,基本上都是点欧的,像这种文件有什么好处啊? 我们知道我们现在很多的拍摄语言开发完成啊, c 语言开啊,是就是什么 c 下载语言加委员,这些开发完成的时候都会有对应的一个编意完成的一个文件,对不对?那些文件很多文件都是可以被反编译的,而且你就, 哎,如果说你没有做好正确的压加壳的话呢?你的原代码程序是很容易被别人通过逆向程序来盗取的啊,那么而我们的这个地方 用 c 语言啊,或者 c 家家语言开发出来的编意完成之后的这些程序是很难背 反反反向工程的,逆向工程的,而且逆向工程出来的这些代码基本上是属于乱码啊,基本上看不到的啊,基本上看不到的,而且因为他这个地方编一下去就比较底层了, 就比较底层了,很底层了啊,所以说,呃,这个,这个是一个好处,另外一个呢,就是我们使用这个 qt 来开发的,也就是他其实是一个 c 加加与对不对 c 加加的一个基础,所以说他的这个程序运行的效率应该来说是 目前我们可以说是最高的啊,非常非常高啊,非常非常高,那再运行再高一点,就是我们用汇编开发出来的,但一般来说不会有人用汇编去做一个这种程序的 啊,你这工作量实在实在太大了,实在是太大了啊,所以大到你无法想象,对吧?更加不会有人用意令去写这种程序,是不是啊?所以那么 基本上我们这种程序最为底层的就直接就是 c 原 c 家家来开发他,他的这个速度是非常非常快,包括我们各种服务器 啊,各种服务器开发的啊,都都是使用这个。那么我们现在,呃,即使这个 qq 啊, qq 的话呢,他绝大多数一开始的时候当然是使用 c 语言,对吧?后面的话呢,也融入了一些什么? c 下巴, c 加,呃,包括一些其他的 一些东西啊,都会融入起来,也也有融入进来,但是他还是绝大多数还是使用这个新家家园啊这种在开发,那么这样的话呢,他的运行成效率是非常相当的高啊, 是相当的高啊,那么我们现在的话呢,直接新建吧, 到这里新建啊,重新新建点一下,嗯,快的,那这里面我已经解释过了,对吧?创建工程啊, s test。 好,我们选择一下桌面上的这个 lgy 有这一块啊,那么这里面的话呢?好,这个地方这样就好了,选择好了这个文件夹,那么这个地方我们默认是勾选的,那么这这其实就是个编辑器啊,大家了解到一个就是一个编辑器啊, 默认就勾选了一个变异器。好,那么我们接下去进行下一步。那这个变异器的变异器完了之后呢,他有个变异的路径啊,比如说他这个地方有三个,三种模式,我们任何的一个,比如说我们的程序,一般来说呢,就是在开发的, 我们一般都会使用就是第八个模式啊,就相当于是他的那第八个模式的话呢,我们就是程序运行的效率相对来说要低一点啊,那么雷厉斯模式的话呢,要更高 啊,愿意投入生产的时候,我们一般来说是雷利斯模式啊,啊,那么这个就是像 pro profile, 就是项目一些文件,对吧?其他的一些文件,那么相当于是工程文件一样的,对不对 啊?那么这个地方的话呢,呃,我们就让他这两个都一起变异。好啊,反正都让他一起变异,都可以变异,那么这个路径变异的路径也可以去选 啊,路径也可以去选。那么这个边一的路径的话呢,我们这在 qt 五当中啊,跟 qt 四当中还是有一点不同啊,不同在哪里呢?不同在于,呃,他的这一个程序啊,不能放在呃,跟我们的原程序不能放在同一个目录下 啊,啊,不然的话他变异的时候会爆错啊。这个地方给大家要注意一下啊,不要放在圆程序的目录下啊,就可以可以放在跟圆程序的同级, 比如说我们待会这里有个 test, 就放到他的同级啊,当然他自动会生成一个同级的,只不过他的名称会比较长,比如的被被被被那个变异过的一个桌面应用程序,对吧?好,那么我们点击下一步,下一步之后我们这里面有三个选项,非常非常的重要,你要注意啊, 看到三个想象吗?看到了吧?那么这里面最底层的是哪一个窗口?就这个 q v, 这个是最为底层,就是一个窗口用程序,那么他是 最里最最底层的啊,最最底层的,那么他的上一层,他的在在后面几层,比如说这是一个呆了的,对不对?呆了的其实也是他的, 他要形成一个 dialog 之前,他首先必须是一个 wedges 啊, wedges, 那么同样的 q men window 也是一样的,想要有个 qmen window 之前还是要必须要有个 q vjx。 那么这两个的一个好处是什么呢?如果说我们 如果这三这三个是有区别的,你再记下来啊。如果说我们想要开发这个像我刚刚的这个地方,刚刚的这个东西一既要有上面的一个菜单导航条, 对吧?菜单栏又要有旁边的,比如说像一些浮动栏,浮动栏就像我们的一些开发工具旁边不是有一个刀刀, 这个叫做道口,道口就像一个浮动窗口一样,浮动窗口一样啊,我们开发工具上面一个是浮动窗口啊,那么,呃, 右岸有我们的这个窗体中心位置主窗体,就像我刚刚展示的不是有左侧的一个菜单,上侧的一个,左侧一个动卡,其实是一个动卡 列出来的浮动窗体,然后上面的话呢是一个菜单栏,对不对?然后呢?中间中间还不是有个位置吗?采集数据什么的,对不对啊?这样如果是这样的一个东西,那么我们开发的时候就使用 qq 门 window 啊,那么接下去的话呢,我们呃如果说是采用的是这个 q 带了的话呢,我们使用的是什么呢?他就是就像我们那个那个那个 a 八那个东西,那个上面我们在展示的时候其实是默认是没有这个叫做什么? 没有菜单上面的一体一个一个菜单选项的,是没有菜单选项的,那么也是呃,我们到时候的话呢,也是需要把界面给隐藏起来的,也就是这个带了个的话,我们其实没有放大缩小啊,他只有一个叉叉, 而我们这个坤妹妹的话呢,我们就像这种程序一样,可以有这个最大窗口,小窗口,对吧?像这种还有个叉叉,对吧?带了个我们就直接是一个叉叉 这个厂家啊,所以我们很多的在我们的这个我们大家注意啊,我们在开发那个天路市程序的时候呢,我们其实是一个个窗梯,然后呢我们其实只需要用一个带就可以了 啊,只需要一个这个这个叉叉就可以了,而且我们要把这个最外层的这个东西要给他隐藏起来,隐藏起来,因为我们稍写进去的时候不允许让他显示是显示叉叉什么的,对吧? 上线进去的时候还像一个窗体一样弹的内两,肯定是呈现内部的内容,对不对?呈现内部我们制作的内容啊,那么我们这个地方我们就使用这个最为基础的 q v 好,那么新建完成的时候我们会发现在这个新建窗体上面同时生成我刚刚所说的三个文件,第一个文件是点 h 是什么文件?哎?读出来头文件,第二个是什么? cpb 文件是叫做什么文件? 原文件 cpb 其实就是 c plus plus, c 加加,对吧?啊?那么 这个名称我们也可以自己来换过来,比如说我们,比如说第一个名称,我们假设第一个名称叫做后后母也可以,对吧?或者捞军登录 是不是也可以啊?啊?那么我们假设是登录啊?啊,那么这个地方勾选创建界面有什么不同呢?这个我们发现如果勾选的话,下面是不是给他按亮了?一勾选是不是就亮了?没有勾选的情况下,就像 只有原文件头和原文件这种形式界面,需要我们自己在我们的这个 cpb 里面去进行创建, 明白了吗?如果你勾选了,那么就意味着你这界面可以进行可视化开发,因为他这个地方你看到这个文件后面有个点 ui, 对吧?可以进行可视化开发啊,那么我们就可以拖空间,拖空间拖到哪里呢?就拖到这里, 就拖到了这里,明白了吧?就是这样拖到了这个界面上。好,那么我们接下去来看到下一步,下一步啊,下一步之后这个地方版本控 我们是没有用到,版本控制系统没有用到,所以默认就是 no, 如果用到的话就是创建一个,那么所谓的版本控制系统的话,就是相当于我们,呃,我们团队协作开发的时候使用啊。呃,比如说我,我今天我开发了一点零版本,对不对?下一个人我开发了一点一版本, 对吧?那么我下一次再开发的时候,是不是要从版本控制器上面把一点一版本下载下来,我在这最新的技术上面再去进行开发, 对吧?这就是所谓的版本控制啊。那么最后的话呢,他会生成这样的一个目录,下面会生成这些文件, cpp、 点 h、 点 ui, 比我刚刚要多了一个 点余爱,对不对?我刚刚是没有点余爱的啊,那么我们还有就是一个 pipro 啊,这个是个工程文件,就相当于我们未必 一样的啊,工程管理文件啊,那么同样的这个地方还有个 cpp 文件,就是一个原文件,对吧? fm 文件,对不对?只不过我们 vb 当中把那个 fm 跟那个 h 和这个这三个文件都集合在一起了, 这里面是分开的啊,在 c 家, c 家家里面我们开发是属于分开的啊。好,我们点击确定完成,完成之后他就会创建了这样的一个界面,对吧?啊?左侧就会开始创建,而且我们所有的 编码编完了,编完成之后,我们只有经过编意之后,他才能够呈现出新的程序来,如果不编意,他还是老的, 不变异,他还是老的,也就是我们 c 家呀。这种程序的话,开发完成之后,你想要让我们的应用程序更新到最新状态,就必须要将我们的元代码统统的给编一遍,编一遍,然后 就会新生成一个新的应用程序啊。那么我们来看一下这里面,接下去我们创建完成之后,界面上是那样的,在我们看一下文件夹里面,文件夹里面首先是一个项目文件夹,接着是接,接着就是项目文件夹里面的这些文件, 对吧?啊?这些文件那么同时会生成一个点 u 的文件啊,就当前的这个用户,那么这个点 u 的文件的话,往往就是在我们跨平台遗址的时候,我们把这个文件给他删掉啊,然后呢 在相同版本下面,我们跨平台移植的时候,他会自动生成一个新的这个文件啊,这个时候呢他就自动兼容了。所以很多很多相同版本的时候,跨平台移植的时候,我们就会采用这种形式啊,采用这种形式这个文件我们是可以删除的, 没有关系是可以删除的啊,那么我们接下去应该知道这几个文件都是用来干什么的了吧?笔记记好没有 啊?好,那么接下去我们来看一下啊,我们生成之后,这个地方他会默认给我们打开了这个 cpp 的文件,对不对?其实上面还有一个什么点啊?头文件,这个是一个工程文件,对吧?然后这个地方是一个 界面文件,这是一个界面文件,我们双击这个界面文件看一下,你看就是一个床体,对吧?我们可以比如说随便拖一个按钮上面啊,这个就是我的按钮双击进去,比如说是刘啊,刘金玉编程啊,很简单,对吧?啊?我们来看一下啊,那怎么样来浏览呢? 怎么样来浏览呢?直接点击这个就可以了,那么点击这个的时候呢,他同时会给你变异的,如果你单独点击这个程这个构建项目,那么就意味着他就是只是变异,并不运行。这个是一个调试嘛?大的嘛?有个 有个虫子吗?对不对?调试运行啊,那这个地方我们就是一个既编意用运行啊,我们现在编意将运行啊,点击他啊,那么这个是自动要教你保存一下啊,保存 co 啊,保存,那么这个时候呢,他就会看到你,会看到你这里面, 呃,那这个有个构建的一个进入条,对吧?进入条,那么这个时候边边一边输出,我们马上就输出了,你看这个程序就出来了, 你看是不是很简单,很简单啊,那么开发的时候稍微复杂了啊,第一个程序是很简单的啊,第一个程序是很简单的,当我们如果想要设计这个界面的话呢,我们这个地方,比如说想要更改一下他的这个,呃, 一些相关的,那这个这个是属于他的一个这个对象的名称啊。啊?对象的名称,比如说是不能改,比如说想要改他的一个,呃,抬头啊,比如说抬头,抬头就是 啊,假,比如说我们把它改成 q 啊, qq, 假设给他改成 qq 啊,那我们继续运行,他又要重新变异了啊?每次都要会重新变异的 啊,从一变异之后,第二次变异稍微快一点啊,第一次变异比较慢啊,然后这个地方是不是又改成 qq 啦?同样的,我们要知道啊,我们这个 q t 里面在使用的时候啊,所有的这些属性 能够修改的地方,我们都能够通过代码修改,这是不是跟未必是同样一个原理啊?哈,所以你只要有这个编程的思想,很多后面用的时候会发现有点类似,对不对 啊?会有点类似,只不过语言不同啊,那么我们来看一下啊,这个地方他有几种模式。 qq 的这个界面,首先是一个欢迎界面,我们就是新创建项目,对吧?然后这个地方编辑,编辑就是呈现项目 那些项目以及代码,项目以及代码,那这个这个 ui 文件其实是一个什么呢?就是一个参谋文件, 看到了吧?设置定义他的一些,呃,什么宽高啊什么的,对吧?那么设计界面呢?就是我们可视化开发啊,左侧就是一些空间, 对吧?那么这个第八个界面的话呢,就是我们在调试的时候,他会调到这里来啊,会调到这里来,那这个地方还有个叫做项目文件啊,项目文件的话,我们就是这个地方有管理,管理我们的一些很多的一些项目的一些环境啊 等等,这个地方有很多代码控制啊等等啊,呃,项目变异器啊,对吧?有很多啊,或者是你看这个地方,比如说让你是采用什么模式啊?变异出来到底是怎么样子的啊?这个地方默认我们这里是一个第八个,对吧?第八个这个模式啊,然后这个地方还有一些 q make, q make 一般来说就是,呃,让他让让我们这个地方去生成一个啊,你看 q make 什么呢? q make 的是这个东西啊, project, 对吧?这里面有一些相关的配置,像项目相关的配置,把它生成适合于我们当前系统环境的一些文件啊,一些文件,那这个魅可的话就是 真正的变异程序了,对吧?变异程序了啊,那么其他的也不需要管了,我们这边只要明白这些就行了,这个很重要啊,这个这个配置文件很重要啊, 这个项目配置完全很重要。这个地方我们往往采用,比如说我们想要呃类写一个类似于 qq 消息的,对吧?啊,那么我们这个地方就要加入相关于 qq 消息的这个 soke 的的这个库。内裤, 这个内裤,这个内裤就是 c 家家语言里面的这种内裤啊啊,他就给你编一好了,这里面已经有了,你只要把这个内裤给你录进来就可以了,就像拍摄 里面我们就用 pot 抹布库啊。呃, gs 里面的话,就像我们这个 htm 页面上面有个 link 过来,对吧?类似于这种东西啊,类似于这种东西,对吧?那么呃下面的话呢?一些呃配置文件,比如说这个地方,我给大家简简单介绍一个比较常用的啊, 什么什么配置的模板?配置的目标,这个目标的话呢,基本上是属于深层的一些文件啊,深就深层的,你的项目,呃叫什么名字? app 叫什么名字,对吧?我们这里面是 test, 那么我们这个默认编意完成之后是怎么样的呢?大家可以看一下,默认编意完成之后就是在我们同级目录下面, 同级陌路下面啊啊,这就是这个嘛,对吧?刚刚很长的这个名字啊。第八个,这里面点进去看到 txt, 对不对? tst, 那么我们直接可以打开这个 tst 的啊,这里打不了,打开不了,为什么?打开?不 是因为他的环境还不够,我们需要把 qt 基础的这个环境给考进去才能打开,也就说默认情况下我们需要考很多,比如说我这里我给大家写过一个叫做一个一个 tcp 的啊 啊? tcp 的一个程序,用 qt 来写的,有个可爱的,有个骚啊,对吧?啊?我之前之前那个写的时候写的,那么写完之后呢?默认是打不开的,你要把 qt 的那个库下面考考很多这个 dl 这种这种程序,对吧?你所有引用到的东西全部要给他考过来,包括他的基础环境。普兰特啊,这个叫做普兰普兰的风, 把烤过来,烤过来之后你就可以用了啊,就可以单独的去打开了。默认情况下是不能单独打开的啊,不能单独打开的,要,要把这些东西都给烤过来,这这些东西在哪里呢?就是在你的 qt 安装路径下面是有的啊, qt 的安装路径下你要去找啊,那么这个地方我们大家需要的时候,到时候自己到路径下面去找。 好,那么我们再来看到这个地方有一个地方,我刚刚要提一笔啊,看到这里面这个地方有什么不同呢?这个地方 这个是 cpp 文件,是一个原代码文件,对不对啊?我们看到这里面要注意啊,上面是一些包含文件包含,比如说包含了一个头,包含了我们的界面的一些文件操作,对吧?那么我这里要提的是什么呢?这个是一个类名 这个是一个类名,那么呃,这里面的话呢?呃,他是记,他是要继承了一个什么呢?继承了一个 q, 你看这个,这个,这个是冒号,是代表他继承,也就说他基础要拥有的是一个 qv 的人士,他是一个窗体,他只有继承了这个 qvid, 那他才能够被渲染成 这个窗体,他才拥有这个窗体的一些功能啊,要不然是没有的,那么不管这些啊,我们单独的看这一款这个括号,反正我们这个地方我们新建完成一个一个界面的时候,他会自动生成,这不是都是会自动生成的吗?啊?你想要快速入门的话呢,首先要记住的是这一块东西是什么? 这啊,你先不管啊,比如说这个地方是载入你的这上面这个界面吗?对吧?载入这个界面吗?我想告诉你的是,这个地方就是我们之前所讲过的构造函数, 看需要个球构造函数的地方,哎,此处为构造函数的地方,只要我们下一次扭一下这个窗体,这个窗体,我比如说我们要打开多个窗体的,我们只要扭一下一个新的泪,我们新的窗体不就出来了啊,同时第一时间就会加 在构造函数里面的代码构造函数里面,这就我们可以看成是构造函数啊,看成构造函数 就是一个类的构造函数啊。那么如果说我们单独写一个类的话呢,我们其实是他的相同名称的,如果我们单独写 c 加加的时候啊,介绍呢是一个类名,可拉斯 name, 对吧?后面的话呢,是相同的, 跟类名相同的。这个函数的名称作为他的一个构造方法啊,而不是单独用这个 ctrl 加个头了啊,这个语法上面又有点不同,但是大家有这个思想对吧?有了思想之后你才能够后面去做啊,构造函数。 好,接下去我要给大家讲到的,上次给大家提高提到过一个,当一个类被消亡的时候,他知性的是一个什么函数,记得吗?哎, 机构函数,对了,机构函数,上次我说过机构函数用什么符号,是不是用这个这 发?哎,所以说我们以后看到这个符号的时候,那么这里面我们其实就是属于虚构函数啊,虚构函数 处啊,吸购函数数,可以看出看成一个函数的就相当于这这个类我要另一个类的时候就会执行这个部分,当我们这个类被铃木的时候, 或者是我得力的这个类的时候,这个类的扭出来的这个对象的时候,这个对象我要得力特的时候对不对?那么与此同时他会执行西构函数出, 对不对?哎,那么这就是这个类的一个生命周期啊,生命周期。那么关键是 c 加加语言啊,并不会马上执行这个东西啊。 c 加加语言的入口在哪里? 在这里内涵说明白了吗?这是路口,也就说 只能所谓路口有几个,但不能选择啊,只能有一个啊,那么这个地方你要记住啊,你要记住函数程序的路口,函数 路口函数是妹啊,而且且整个应用程序啊只能有一个,否则要报错 只能有一个,不然的话是无法被变异通过的。无法被变异通过我是不是就爆破啊。那么同学们在写这个 q t 的时候啊,后面你会发现即使你会很多的东西, 然后写的时候也发现是各种报错啊,后面报错会报的很刺激啊,你各种认为是可能的,可能正确的都会认为是报错,这是因为我们对语法的一个不熟悉啊,不过,呃这些没有关系,后面慢慢就会习惯了啊。 呃,那么我们今天的话呢?呃,这个课程呢,就给大家讲这一些啊,主要是对一个课程的一个 qt 语言啊,也不能说是语言啊, qt 是一个什么? 不要说错了啊。框架啊,谢佳佳框架的一个入门啊,主要是对他的一个入门,然后呢大家回去把这个框架给装好,写自己的第一个 qt 应用程序。 啊,那就这个吧,托个东西让他出来第一个好不好?我们下一节课再来给大家讲这些代码啊,我们今天这节课就到这里。

and to me show me the way and my crystal heart now i don't mind and me show me the way my crystal heart now i don't but。

大家好,欢迎来到 q t 课堂,这节课我们主要带领大家深入了解一下 q t 的工程文件。 pro pro 的文件用途主要分为以下五点,第一,添加我们需要用到的 q t 模块。众所周知, q t 的编程它是以模块的形式进行加载, 比如说我们常用到的 goi 模块、插面儿模块、网络模块、多媒体模块,我们可以在我们需要用到模块的时候再把它链接进去,这样减少我们应用程序启动的加载时间。第二, 指定生成的目标文件信息,也就是说我们可以改变目标文件的名称以及生成 目标文件的目录。三、配置编译需要的文件。我们可以把我们需要编译的原文件、头文件以及 ui 文件放到 pro 文件当中,在我们确定有一些文件不需要编译的时候,我们可以在 pro 文件当中把它取消, 这个时候工程就不会编译此文件。四、配置编语需要的环境, 什么意思呢?在我们的程序当中有一些第三方的库以及第三方的投文件, 这个时候我们就需要去指定相应的文件路径和名称,这个时候就可以用到我们 pro 文件的指定编译需要的环境这个作用。第五, 生成模块的类型。我们可以通过它来定义我们当前的文件是 application 应用程序还是动态库或者是静态库。 我们了解 pro 文件首先需要掌握两个知识,第一个 q make, q make 这个命令是 q t 当中自带的一个命令, 它的主要作用是生成 pro 文件以及将 pro 文件生成 make fire。 make fire 这个单词 大家接触过编程的人可能都会知道,他是编译当中的一个规则文件。在我们 mini gw, 也就说 mini 规当中,可以通过命令 make 或者是 mini gw 三二 杠 make 来执行编译命令。我们也可以简单的说 pro 文件,它的主要用途就是 maker 的文件的一个摘要。那既然这么说, pro 文件能否来代替 maker 文件呢?是不能的,为什么说不能? 因为 mac file 的用法和 pro 文件它有一个这样的区别,通常我们所有的集成环境 id 集成环境 i d e, 它的编译方式都是通过 g c c g 加加或者是 windows 下面的 c c 来进行。 c c 这个文件或者是 g c c 或者是 g 加加,都是通过 make file 的规则 来编译原代码。所以说 pro 文件不能够替代 make file 文件。 pro 文件是 q t 当中的独有特性, make file 文件是所有的编译器当中的一个规则, 在 q t 当中,我们来看一下如何通过 q make 来生成 make fire 文件。一般在 q t 的源代码当中,我们如果没有 pro 文件,我们可以通过第一步执行 q make 杠 project 这个命令来实现。 这个命令执行了之后,他就会在你当前的目录下面生成一个你当前目录名称的,再加上点 p r o 为后缀的一个 pro 文件。那如何通过 pro 文件生成 make file 呢?我们看一下可以执行第二步 to make 我们的 pro 文件的一个名称, 如果在当前的目录和你的 pro 的文件的名称是一样的,也就是说呢,我们在 test 目录下面 去执行 q make, 这个时候如果你的 pro 文件是 test 点 paro, 就可以不用 加上这个 test 点 pro 这个文件,如果你的目录的名称和你的 pro 文件不相同,那么我们就需要在后面带上我们的 pro 文件的一个名称,这个我们可以在下一步进行讲解。我们 特别准备了一个历程,到时候我们可以在历程当中具体的操作一下, 通过 q make 点 pro 文件这个命令之后,我们就可以生成我们 i d e 环境常用到的 make fire 文件。好,我们来说一下 q t 需要添加的模块,在我们在 pro 文件当中,我们有一个写法叫 q t 加等于 call g o i 呃, vegetas, 在 q t 五当中啊,多加了一个 vegetas 这个模块,在 q t 四当中, vegetas 和 g u i 是合成到一起。我们这里来看一下加等 等于和等于有什么区别呢?这个含义和我们编程当中的加等于类似,如果我们的 q t 当前如果是等于括, 那么我们加等于 g u i 和 wage 的十,那么我们就相当于是 q t 等于括 g u i 和 vegetables。 也就是说加等于不会取消掉以前环境变量当中所保存的一些配置。而等于呢,直接是将当前的我们配置的方法 代替以前的配置方法。我们切换到 q t creator 当中来看一下。 打开工程有个 pro 文件啊,有一个 pro 点 us, 这里给大家说一下 pro user 是什么呢? pro user 跟 qt 来说严格意义上来说是无关的。 这个 pro user user 它是 q t correct, 它通过 pro 文件生成的一个, 它的作用是配置 g c c 的环境变量以及深层 最终的执行程序的指定的一个目录。我们其实可以不需要他,也可以把他删除,我们删除掉这个文件,我们试一下。好,我们把这个工程 打开,我们刚才说了 pro 点 user, 它这个文件呢是用来配置我们的编译信息的,我们发现 我们把那个文件删除之后啊,我们就他就需要我们去配置一个我们的编译环境。好,我们直接导入默认的编译环境,康菲格 加载,点击 why, 我们可以看到这上面有个工程文件 pro, 然后有一个头文件原代码和我们的窗口 flames。 好,我们已经打开了我们的 pro 文件,我们发现第一行它有一个这样的写法, q t 加等于 破和 g u i。 这个意思就是我们常用到的第一种用法,配置 q t 所需要的模块, 当它大于四版本的时候,也就是五版本需要 q t 加 vegetables, 我们如果需要 用到叉面模块,我们可以这样讲, q t 加等于叉面,也就是说在这个时候我们把 q t 当中的叉面文件, 需要用到的库和它的头文件都会加载进来, 这就是第一种用法,非常简单,我们大家也比较好理解啊。当然这些注视我们大家可以删除掉,没有什么含义,可以删除掉,没什么含义。 我们第一步就是 q t 的一个模块,我们第二个功能,我们应用程序的名称,我们指定的目录, 我们的边翼红开关,以及我们在深层的中间文件 object 的一个目录。我们来一点一点的来讲解目标的文件名称是什么意思呢?那我们先编译一下, 好便宜,成功了我们再跳转到我们的目录下面,我们发现我们的 e x e 文件生成出来了,叫 log in double 点 e x e。 好,我们 c clean 清除文件。好,我们把这个全部都删除, 我们来修改一下我们应用程序的名称, targeted name, 我们叫什么名称呢?叫 test login。 好,我们编一下,我们看一下我们生成的文件名称是否改过来,改成 text login 点 e x e, 好,已经生成出来,我们再来调整,发现 我们这个名称改成了泰式 logo 的印点 exe, 那我们想指定到其他的目录怎么办呢?好,我们把它再接着删除, 再接着删除。比如说我们指定到我们的当前文件下面,当前文件的目录下面指定程序放置的目录 des 的 di 二,我们写法是 des 的 di 二等于我们的目录 当前目录,我们可以这样表示, p w d, 这是一个红, 或者是当前目录下面的上一集目录,当前目录上一集点点, 我们把它放在这个并目录下面。好,我们看一下会不会生成一个并目录的一个文件夹,然后把我们 teslo 硬点 e x e 放在这个文件夹里面。好,我们编译 好,运行出来,我们再次回到我们的目录,我们跳转,发现多了一个并目录, 那我们找我们的 e x e 还在以前的目录下面,去找一下,看一下,我们发现我们找不到了,我们有一个并目录,我们发现 test log 硬点 e x e 单独的放在这个地方,那边影红开关是做什么用处呢?如果我们 程序有多个条件,当我们的变异红开关是一的时候,我们执行的操作是一,当我们变异红开关 是二的时候,我们可以执行操作二,但是我们在我们的代码里面不方便去设置我们的这个编译红,以便于我们的编译的方式可以多种多样, 比如说我是在 linux 平台下面,我们可以自定义一个编译红开关, 我们可以指定很多的硬件平台,比如说我们的案板还是叉八六的板子,我们是板子一还是板子二,都可以用 用这个编辑红开关来表示。这里我们就不在例子里面做讲解,因为大家可以看到用法都是一样。还有我们深层的 object 的的路径,我们可以尝试的看一下 object 的一个路径, 我们再次回到 qd created 当中, object 的一个路径 大家可以随便写在什么地方,在 pro 文件当中它没有这个顺序的要求。 好,我们可以在这个目录下面,当前的目录上一集我们单独有一个 opg 目录,我们尝试了一下 先清除,我们还是把以前的目录里面的编译信息给全部删除,我们尝试一下再次执行编译。 看一下我们的中间生成文件是否会放在 optic 的这个目录下面。好,已经编译完成。好,我们再到我们的目录下面,我们发现这下面没有点哦文件了, 哎,多出来一个 obd, 我发现所有的点欧文件都指定到这个下面。好了,我们本节课结束,下节课再见。



好,今天主要介绍这个,呃, qt 的这个核心理念就是这个啊,你理解一下信号与槽, 那么我们今天的学习目标是这样的啊,首先呢,我们要了解 q t 的这个信号与槽的这个机制啊,啊,说 q t 也好,说 p i q t 也好,这个因为因为我们是呃拍送的一个啊绑定,所以那个说 p i q t 和 q t 都是一样的啊,我们以后为了简单就直接说 q t, 然后我们了解一下通过这个代码连接信号一槽的这个方法,嗯,因为这个我们编程的时候呢,可能不太可能 总是依赖于这个 id e, 那么总有一些呃代码需要我们自己手动去敲,所以我们也了解一下通过代码来连接这个信号与淘汰这个方法。然后我们要掌握使用艾瑞克啊,自动生成这个曹汉 的方法。嗯,然后呢,我们要理解这个 piqt, 他这个自动连接信号与槽的这个机制,也就是说我们使用艾瑞克生成这个槽函数,他是怎么与我们这个信号来自动连接的。最后呢,我们要嗯简单的介绍一下怎么编写这个槽函数, 那么我们先看一下这个啊,洗好水槽这个机制啊,简单说一下 qt 啊,它是由这个奇趣公司啊发明的这么一种啊, gui 的这个框架。 那么后来呢,这个奇迹公司被诺基亚收购了,然后诺基亚就成了这个 qt 的这个,嗯,大股东也也相当于是这个开发者,那么我们之前用了很多诺基亚的手机呢, 嗯,这个 gy 就是由 qt 提供的,然后在一二年的这个 qt 又卖给了另外一家公司叫 djita, 芬兰的一家 it 公司啊,这个 qt 的这个道路也比较曲折,但是索性是他这个一直在向前发展,并且也越来越好做的 啊。 qd 本身呢,他是对于这个事件响应是提供两种机制啊,一种就是跟大多数的 gui 一样,是一种底层的,就相对底层的一种机制,比如说一个按钮, 呃,鼠标点击和触摸屏触摸点击,或者是键盘选中它敲回车键点击这三种方式。呃,对于底层的这种事件想象是不一样的,就是三个函数去实现。嗯,那么当用户进行操作之后 啊,底层的这种 gy 的事件想要方式呢,会提供给这个,相当于是提供给编程人员非常详细的这个啊动作来源,比如说是用户鼠标点击或者是触摸屏点击,那么 qt 呢,在此基础之上,率先提出了一种高级的信号与槽的这个机制啊,因为这个 qt 觉得哈 啊,底层的那些按钮点击就是触发这个按钮按下的这些啊动作来源,比如说鼠标点击,或者是触摸屏触摸,或者是键盘操作, 他并没有什么太多的意义。那么 qt 提供了一种高级的香水槽这个机制,他叫屏蔽。底层的这个动作细节,相当于是不管是 哪一个动作来源点击了这个按钮,我最终的这个动作执行都是这个按钮被点击了,我的事件响应都是一样的。所以呢,知道这些底层细节,其实对于编程解决这个 想要动作这个工作来讲,并没有什么太大的帮助,所以 qt 呢,提供了呃,在事业上率先提出了一种这个信号有槽的这个响应机制 啊,这个信号有槽的想象机,就是说不管你是鼠标点击,还是键盘操作,还是触摸屏操作,还是各种动作来源,那么只要我这个按钮 被点击下去了,那么我就去执行他相应的这个槽函数去处理,因为你不管是如何动作了这个按钮,只要他被按下,那么就应该有一种相应的机制,有一种槽函数去处理他 去执行相应的动作。所以呢, qt 这种机制对于减少代码量来说是非常重要的,并且他也是一种,现在已经有很多那个机外框架采用了这种机制,那么 qt 呢? 它里边所有的空间都支持这个信号有槽的这个机制,并且有预定义的信号和槽。我们在上一节课里边呢,其实就已经使用了它预定义的信号和槽,比如说点击按钮之后,我把这个 可雷可这个信号就相当于是这个预定义的信号啊,连接到这个窗体的这个啊,最大化呀,最小化呀,关闭啊,这这些就相当于是槽函数。那么在上节课我们已经使用了他预定义的这个信号和槽。当这个 呃空线出发后,比如说我们点击拉鸟之后, qt 默认的机制是就直接发射出信号就不管了 啊,这个发射手信号这个表达意义非常形象啊,他就把这个信号丢出来,相当于就是说这个按钮被按下了,但是有没有动作,有没有相应的裁判术去处理这个信号, q t 是不管的 呃,这一部分因为是由编程人员来处理的,所以当空间出发之后, qt 直接就发射出信号,那么后续的投案处处理呀,这些是由编程人员来完成的,所以这个他是不管的 啊。那么信号呢,需要连接到槽才能得到处理,这就是我们刚才说的,如果光发射出一个信号没有像样的槽函数的话,那么这个信号是相当于是呃无效的信号,那么 点击按钮也不会有这个像样的操作。那么预定意的信号和槽呢,可以连接到一起啊,零代码实现一样的功能,一定的功能,就像我们上一节课做的操作一样啊,把这个信号和槽通过这个啊 gui 那这个 id 里面的编辑方式把它连连接到一起就可以用。我们上一节课也是没没有敲任何代码,就实现了这个窗体的这个改变效果,那么它可以实现一定的功能。但是呢,这个预定意义的信号和草毕竟是 功能有限,所以有些时候我们需要对他进行扩展,那么就就需要我们自己去变现代码实现,那么不同空间发出的这个信号类型可能不同,比如说嗯按钮的话,他只有这个点击, 点击的这个信号发射出来,那么他是不带有任何参数的。但是如果是这个呃书文本输入框,他可能发射出信号的时候就带一个这个呃自助串 类型的信号,那么比如说这个呃 q 带我就是那个小手轮,就是像我们那个旋转的那个旋钮一样的这个空间,他发出的信号呢,就可能带一个整形的这个参数类型,所以不同的空间发出的信号类型呢,可能是不同的 啊。此外值得值得一提的是我们这个 piqt 啊,他比私家加版的这个 qt 更加强大, 它其他在哪里呢?嗯, c 加加版的这个 qt, 它的槽函数必须是固定格式的。声明,也就是说你想用一个槽函数去响应这个信号,嗯,直接向上的动作,你必须这个槽函 用固定的格式去定义去实现啊。 pyqt 这个槽函数呢,还有一个特点就是他可以是任何可以调用的东西啊,自己定义的函数啊,或者是类里面的方法呀,都可以啊,没有特殊的格式要求,只要是可以调用的东西就可以。 嗯,那么我们接下来呢介绍一下这个通过代码连接信号语槽这个手动连接信号语槽的这个方法呢,有这么一下几种。 呃,这个方法是在我们啊生成了这个, 嗯, gui 主类里面的那个出手画函数里面去实现的,或者是自定义一个函数去实现这个信号一槽的这个连接啊, 等一下我们会详细的介绍一下这个啊,在哪一个部分输入这样的代码去连接他的信号一层。 那么我们先看一下这个手动连接小耳槽的方法。第一种就是赛尔夫,这个是当然是指自身了,这个啊面对象变成了赛奥夫啊,大家都知道啊,赛奥夫,大家可能这个第一个参数是 wedges, 就是这个空间,那么这个空间, 然后这个空间带有一个信号参数叫 signong signon 啊,括号里边这个引号就是指他具体的这个信号名称,比如说克雷克啊,或者是这个,呃, 拖拽啊,或者之类的,然后后面这翻个身就是我们 piqt 定义的这个槽函数, 那么这里边呢是我们啊,第一,第一种方式是我们自定义的这个啊函数去实现这个藏函数,那么第二种方式前面也是一样啊,可耐克的一个空件,然后发射出一个信号,那后面呢是 instance 点 master name 啊,这个呢就是调用一个类或者其他空间的这么一个方法 啊,这种方式与上一种方式不同的是,上一种方式是我们完全自定义的这个函数,就是我们可以自己随意写一个 dfan 一个函数,那么第二种呢,就是从一个已有的类里边调用一个方法。好,我们看下第三种。第三种呢也是 前面都是一样的啊,连接一个空间和他的发射一个信号,然后呢谁去呃处理这个槽呢?就是谁去实现这个槽函数呢?也是 instance, 然后这个字母 敲错了一个一四三四,然后这相当是一个空间,另外一个空间跟前面的不一样的空间,这个空间的自定义的槽, 那么后面会有一个 slow 的函数啊,这个自定义的槽去接收前面的空间发射出来的信号,那么手动连接信号一槽呢?我们常用的就是这三种方法, 呃,这个手动去连接这个信号隐藏呢,我们后面的实力里边也经常会用到。那么我们 本节课呢,主要是跟大家先预先介绍一下,那么我们这个课程主要是啊介绍使用艾瑞克去自动生成这个纤维操,因为啊大部分的工作呢可以自动做,我们就不要手动去自己敲,因为毕竟自动生成会稍微快一些啊,需要手动的时候我们再说 去连,那么我们使用这个艾瑞克生成草函数呢? 呃,也是这样的一个类似于这个拍层的这个啊, 相当于核心价值观的这么一个说法啊,能自动生成你就不要手动去编写,也不要重复造轮子,非得说你自己手动编写的函数效率都这么高,比这个啊用 id 自动生成的都好。我觉得这个没有必要,你有时间你可以把这个精力放在其他事情上, 然后不要重复的去造一些轮子,还觉得自己特别牛,这个真是得不偿失。那么我们现在呢,就演示一下这个 怎么样用艾瑞克去生成呃,相应的这个草函数。第一, 他是一个黑框一闪而过,然后 出现一个恐怖的舌头,那么进行一些处处化之后,他就会打开这个环境,我们还是在上一次那个工程基础上进行修改和添加,这样,嗯,大家学起来可能也比较有连贯性,不要把一个工程用完了之后就直接丢了。 好,我们打开最近的工程, 那么这个 gy 我们双击看一下。 好,这里边就是我们现在的上一节课的这个例子,那么我们这节课呢,继续使用这个例子啊,因为这些 我好像都已经连到了相应的这个槽上,我看一下,对,这些按钮都已经有相应的槽完数了,那我们再拖一个回来,再添加一个新的按钮, 改个名字就要测试, 然后保存编辑一下这个床体。好,编辑成功,我们运行一下看看。 嗯,好,我们这个,呃,窗体已经出来了。好,我们点击这个按钮,因为他没有连接哦,手动,没有,手动边缘,他的这个槽函数代码也没有,在 这个,呃图形界面里面给他分配草函数,那么他是没有任何响应的,那这边呢?啊,这边这些屏幕依然啊,这边这些按钮依然是我们上一节课的那个草函数,所以我这里不做演示。好,我们来介绍一下怎么让这个 二十个号自动给他生成呃,像样的草函数。我们先来 看一下这个刚添加这个按钮的这个属性 pos 八三六,记住这个 lip 就是他的编号。 然后我们在这里右键选择弹出的窗口里选择第三项 generate, 第二个扣的。 啊,在弹出的窗口里面,我发现这里边克拉斯内没有,下拉也没有,我们就新建一个 啊,新建一个他自动弹出来的命运 window, mice, p i, q, t, test and p y, 啊,就是这个,我们就选, ok, 然后我们选下拉,选择找到这个我们新建的这个按钮, pose8, ten, 嗯, six, 然后点击前面那个小三角符号, 我们看到这里边有一些那他支持的这个信号,那么我们点击第一下。