粉丝292获赞1065

下面我开始啊,之前实际上说了很多,都相当于是一些序论吧。现在的话我们进行第一课,第一课我简单处理一下,呃,总共包括四个方面,第一个方面就是这个虚拟机的安装,第二个方面是那个乌斑图系统安装,第三部分是 qt 安装,第四部分是 用这个简单用 qt 做一个小的一个,算是程序吧,算是给大家一个简单的零基础的一个, 嗯,开门的一个小程序。嗯,下面是我给大家梳理了这个整个的这个下载的链接,就是省着大家再去上网上搜这搜那,完了也搞不好下载完了之后还用不了。 首先第一个就是这个乌斑图镜像的下载地址,嗯,我们把它复制一下,打开这个浏览器进去看一下,嗯,正常的讲 的话,他这个乌斑图呢,他就是一个另类个色的操作系统。然后他,嗯,上面谁想这些,呃,可能还是要有一定的这个英文基础啊。就是这个,你看这个上面这个是官网的地址啊,因为这乌斑图的这个 镜像,呃空间占用比较大,所以还是要连接官网去下载。我们使用的是这个五版图,是六点零四点七这个版本,然后我们,呃,因为我这个电脑是温室六十四类的,咱们就直接下载,我下载的是这个六十四类的这个操作系统,就是我这个鼠标点击的这个位置, 如果说你的电脑是三十二位的话,就下载这个三十二位的这个操作系统,怎么看六十四位还是三十二位呢?嗯,我们就是看这个右键我的电脑,然后点这个属性,然后可以看到我们这边,呃,关于这 这个上面有一个系统类型,是六十四位的操作系统,我这个电脑是,嗯,十年以前的电脑,嗯,后续,嗯,我也可以更新一下购买这个电脑呃的一些视频吧,因为我这个电脑确实,嗯, 呃,只花了大概可能也就一千五百块钱,这个后期再讲。呃,刚才说了这个无班头下载的这个地址,然后 然后是这个分享那些其中的这个第二个部分就是所有涉及到的程序,我都用我的百度网盘分享了一下,然后大家可以找我, 呃,可以关注我,给我发信息,完了我把这个乘客的这个所有的呃地址啊,还有这个信息啥的 t 恤码发给你们。嗯,下载完了之后呢就会得到这么四个文件夹,嗯, qt, 嗯,然后这个是 vr, 就是这个虚拟机,打开虚拟机呢就是直接下一步,下一步安装就可以了,就是这么一个简单的这个应用程序。嗯,然后 五班用这个训练仪安装的五班组的操作系统,就是操作,安装完五班组操作系统就是像我现在这个呃画面的这样,我们这个输一下我这个设置的密码就可以进去了。 这个操作系统还是比较有意思的,我们可以看到他这个系统实际上有一点像这个苹果的系统,嗯,我们平时就算是不玩不搞这个编程,我们可以也可以试一下这个。其实安装一个这么一个操作系统也是挺有意思的,如果说 你这个电脑只是用这么一个操作系统的话,这个界面可也是可以给人一种呃,就是耳目一新的这个感觉吧,算是。然后我现在可以打开这个乌曼图 屋里边这个浏览器,然后嗯,也可以,嗯,他这个就是用的是相当于是熏水机,熏你出来了一个硬件来装了这么一个操作系统。嗯,这里的话可能是有一点卡,因为我这个电脑毕竟是十年以前的,但十年以前的电脑并不耽误我们使用啊。嗯,然后我现在这个 默认的话就是直接开始都是可以上网的,直接你看我们打开这个百度啊,其实这些都是比较这个画面,都是和他们这个正常温度的这个画面有一定的区别,用起来呢也是比较好看。 然后我们这个操作系统呢?实际上我们用到的只是说,呃,其中的这个命令行这个相关的一些。嗯,后续在讲这个另类操作的时候会继续讲到看他这个右键,然后这个 open permel 就打开这个终端, 然后里面就是有一些很多的,这个我可以看一些命令啊,就是看,比如说这个 l s, 嗯,就是说看当前目录下都有哪些文件, 然后呢?我可以 cd, 嗯,看,我可以上向,嗯,向上一节,向下一节目录完了,我再去 iy 就可以看到上一节目录的这个下面的这些个文件。实际上这些内内行的操作呢?他只是,嗯 简化了我们用鼠标进行操作的这个过程,实际上运营运营这行操作和用鼠标操作是一样的, 这个具体安装无完成操作系统呢?这个实际上,嗯,我 要不我把我这个关机,然后我们整个来,从头从头来安装一下吧。啊?就是说正常来讲的话, 我们安装完了这个距离之后,打开的话就是这么一个画面,然后呢我这个安装呢,我给大家分享的这个版本是十二,嗯, 现在十二,这个是这个版本,也是十年以前的版本,为什么用这个老版本呢?就是这个兼容性更好。 嗯,然后打开这个创建清洗机,然后就直接可以用这个典型就可以。然后下一步就是打开我们这个乌班图的这个镜像,就现在是安装的这个镜像,然后完了这个下一步,下一步所有的机型都可以随便洗一个, 然后用户名呢?我们都可以随便起一个,一晚上我们就直接建一个入团,对吧?然后下一步直接下一步,下一步所有的下一步,然后就可以了,这块我就不做过多的演示了。然后这个是 第一个部分,是这个乌斑图的这个安装,然后呃,虚拟机安装,还有乌斑图安装,然后下面是这个 qt 安装 qt 呢?嗯,我们我直接分享的是一个只有二十五兆的一个在线安装的包,就直接通过这个就可以。呃,通过这个一步一步往下走, 然后就可以啊。但是这里的话可能是需要注册一个 qt 的这个账号,点击这里就可以注册,然后通过这里,呃,注册完之后把你的账号给密码输进去,然后一步一步,嗯,看我这个鼠标所点的这个位置,就一步一步向下安装就可以了。 嗯,然后下面是,嗯用这个 qt 搭建一个最简单的这么一个程序。嗯,我们直接打开这个 qt, qt 安装完了之后就是显示的我这样安装的版本呢?是你看下面后面有一个 ctrl, 我们有个抗命的腿,我们安装这个版本呢?在安装中有一个选项是抗命的腿,然后。

如何使用 q t 呢?对于初学者,我建议使用 q t creator 进行,虽然比不上号称宇宙最强的 v s, 但是它安装配置简单,安装 q t 的时候自动安装,基本可以实现一键配置,这一点对于初学者来说是十分友好的。 q t creator 是一个全新的跨平台, q t i d e 可以单独使用,也可以与 qt 库和开发工具组成一套完整的 sdk, 其中包括高级最佳代码编辑器、项目生成管理工具集成的上下文相关的帮助系统图形化调试器、代码管理和流量开发。 qt 有两套协议,商业版和开原版, 不同的是,前者要收费,而后者是免费的,当然了,后者还要遵循 l d p l 协议的规定。目前主流的 q t 版本是 q t 五和六,对于 q t 五,目前官方长期支持的版本是五点九、五点一、 五点一四和五点一五。如果你使用 qt 五的话,推荐使用五点一四,因为这个版本是相对较新的一个版本,并且有官方支持的开源离线安装包。而 qt 六的发布也有两三年了,目前已经有了长期的支持版本。如果你想使用 qt 六,我建议你使用六点二。 那么如何学习 qt 呢? qt 的框架功能十分强大,内容非常丰富,想要系统的学习需要一些时间的积累。有的人习惯看视频学习,而有的人喜欢读书学习。但是不管是看视频还是看书,最重要的是一定要自己多练习,把视频或书上的磁力代码自己再敲几遍, 这样才能记住。想要快速学习一门编程语言,最好的方法就是学以致用,找一本合适的工具书,首先把前面几张内容重点学习一下,后面就是用到什么去学什么就 行了。比如你想去了解一个按钮的功能,就专门看按钮相关的就行了。去了解他的成员函数,他的信号有哪些,他的槽有哪些说的书籍呢?我给大家推荐一本我自己经常使用的书,叫 qt 六 c 加加开发指南, 给大家看一下。这本书呢,它是由三位业内大佬编写的由人民邮件出版社出版的 q t 专用书籍,我和出版社沟通过几次,从我的橱窗去购买,可以享受粉丝专属优惠五折。 这本书呢,以 q t 六为开发平台,共十八个章节,系统介绍了如何使用 q d c 加加进行开发。首先介绍了 q d c 加应用程序的基本结构、界面可视化设计和布局管理方法、原对象系统的功能及应用。然后深入讲解常用界面组件模型、视图结构、事件处理、对话框 和多窗口的程序实现文件读写等功能的变现方法,以数据库多现成网络、多媒体图表、数据可视化、窗口通讯等高级功能的使用。这本书内容十分丰富,并且配置了大量精心设计的完整的代码和实力程序, 涵盖了进行机外程序设计所需要掌握的各种技术。主题。上集视频说到,学好 qd, 换车换房、换老婆不是梦,给你们看一看 qd 给我带来了什么 来,今年三月份刚换的车,上个月刚交补还没来得及装修的新房子,还有你猜?代码改变世界,程序数学人生加油程序员!

qt 是勾了模块,甘肃,那对于程序员来说呢,应该每一个程序员不管他是学企业家还是抓娃的,不管是用 qt 啊,还是用其他什么东西啊,基本上都会经常的使用的数据库,像正常改查什么的的话,没有哪个程序员他自己不会的 啊,因为这些东西都是模块化的,有很多人其实大学里面的那些课程已经忘光了,对于数据库存的概念也搞清楚,但塑料增生改造呢,每个人都会,但这并不是一个很好的学习方式啊。 那我们后面会稍微介绍一下应该如何去学习数据库。那么我们首先来看一下 qt 怎么使用,首先我们需要把这个大模块加到我们工程里面啊,然后呢,那就加在这里面,然后呢我们就可以加载相应图文件了啊,经过这两步以后,我们就可以像其他的模块一样进行 啊,天马,那 qt 他支持很多个类,我们就不一一列了,主要是你要了解数据库啊,我们现在说的是关系数据库。那什么是非关系数据库呢?你可以了解一下,像我们网购基地啊,挪车库啊这些啊,现在也是比较流行的,而且关系数据库和关系非关系数据都可以混用的。关系数据库简单来说就是表格嘛,是吧, 那么我们这里面呢,就会提到我们前面学过的摩托运啊,这里面呢,我们要复习一下 后面写代码的时候啊,不需要这个 inx 概念啊,如何去通过 inx 去找到外部的数据?我们之所以用过魔豆,就是数据不在位里面,对吧?我们这个是在外面的,不在数据库里面的,那我们通过怎么找呢?这个魔豆就这个通道, 而把它抽象化,抽象化简单到啊,我们通过一个 inx 就能找得到的,对吧? inx 是相当于是一个 很通用的语言一样,然后通过行列我就能找到我想要的东西啊,这个指指到我具体的那个数数据。 好,那这些呢,都是我们后面介绍的,那这里面我们先需要了解一个概念的数据库的数据库,对吧?他的显示终端呢,是一个配套的软件,那都会很多,都是第三方软件的话,你可以下载, 因为数据库呢,他就像一个显卡一样呢,你需要驱动啊,有驱动以后你才能用显卡。那数据库也是一样,你要用一个数据库呢,你也要用驱动, 那你也可以单独去下载上启动,但是呢,你下了,比如说像这个软件以后,这个驱动呢,就已经在你的机器里了,就可以直接使用了,那就不需要再去抖动的去下载啊, 那所以你要用数据库,你装好了听题以外,那你就下一个相应的第三方软件就好了。有很多让书上推荐的是 不知道什么概念啊,我们就这样念好了,再过来一下,对吧? x 这个软件,那他是有试用期的吗?你可以试用几十天,几十天的话对我们学习来说就够了。 好,那么这里面呢,有很多个,比如这是我们提供的一个数据库,就是书上提供原码里有的啊,这是叫做滴滴三次他的后退名。好,那么我们这里面 比如说点这个表,这是表格,那表格以后呢,我们点这个塔就可以看见这个表格里面所有的内容了,那设计怎么设计呢?这个底层矮呢,这里面就看见,比如每一个字段,哎,这个就这个字段,字段呢,其实就是我一个属,每一个属性,我们就叫一个字段,每个特征就叫一个字段,对吧? 每一行呢叫一个 rap, 叫一个记录,那这都是数据库的基础的概念了,然后我们还有兼职的概念,是吧?兼职是不能缺少的, 每一每一格,每一个字段我们都可以设置啊,你是不是是什么类型的?是不是可以可以确诊啊?这都是可以设置的。好,一般设计呢,是在这个底站这里面点下就可以进去看了,这些呢,我们都先不去展示他的,我们后面这个例子来看 啊,我们可以用到的这个艾特他本身呢是一个开元的免费免费试使用啊,免费使用的这样的一个数据库 啊,你可以通过官网去下载驱动,那这个呢是一个第三方的工具,他是付费的啊,你要用下破解版的,那是你的事情啊,跟我没有关系,我当 这种事情好安装好之后呢,无需再安装这个驱动了啊,因为我们这里面就包含了,所以也比较简单啊,你从网上找一个,然后下载下来就可以了。 好,那我们再看 modol, 然后我们这里面这个呢,是 xx 的,就不用管他了,对吧?他是提供一个框架嘛,一个虚的东西,那真的使用了,所以他他什么呢? sorry 的搜索相当于是你把搜索的结果当做一个数据库,然后进行代词啊,那就是一个指读的东西,你编辑看有没有什么意义,那这个呢?这个是一个推波魔斗啊,这个用的很多, 那直接设置一个数据的表,你把表的名称放进去,他就会读到这个表,比如说引破译啊,那那他就把所有东西基本上就可以导到微里面去进行显示了,而且是可以编辑的啊,那编辑的时候有个提交的概念。 好,那我们再看这个加了一个软式弄推广。这个呢,其实主要就是支持了一个外界啊,其他的好像也没有什么太大的改变,还有个就是这个提交的时候会更方便一点。 好,关于其他的呢,我们就不去多谈了啊,包括书上呢,他列出来很多他用的一些类啊,一些函数啊,觉得学习这种东西没有意义啊,就好比 很多人学,呃,卖车口就去学,卖车口里怎么操作啊?学这个色口拉人呢,就学这个在这个工具里面怎么去进行操作,没有任何异样, 你各种数据库都会操作了,但是你还是这个数据原理不了解的话就没什么意义,是吧?那就好比什么呢,你一个人,你会加减乘除以后我给你一个计算器你就会用,而你各种计算器你都会用了,你不了解原理也没还有意义是吧?银行不会去招一个人去专门去按计算器, 他一定是招一个不懂数学的啊,会加点疼痛的人,然后培训一下就就 ok 了吗?那我们很多人呢,大学毕业以后就从来就没有 看过处理库的书了啊,我们还觉得应该还在看一看的,比如看看这个漫画也可以啊,这个漫画很薄的啊,就没多少页,你花个几天时间就看完了,你就这个小故事看漫画吧, 那这里面的内容呢,比我们一般的大专课程里面的理论知识都要深一点啊,至少要讲第第三方式啊,什么数据库应该怎么设计啊,对吧?然后我们 的一些数据库基础的大部分程序要用到的功能呢,都在这里面。学完这些东西以后,那你怎么去设计一个数据库? 如果你数据库很慢的时候,怎么去改进他的?如果你就就某一个字段,你需要进行搜索,那你可以把它设为主键啊,那主键的话,他会通过哈士算法可以可以搜索的更快一点。那等等这些知识的话,我们看看这个还是性价比很高的, 如果这本书的前途性价比就是你可以花很短的时间呢,就对你以后的工作呢会有很大的一个帮助。就像我们现在学做界面呢,就应该学一点教程重新学一样啊,你可能也就学个半个月一个月,但对以后你不管用哪一种 不行啊,你都会有点胸有成竹的感觉啊,因为现在的界面上做的也是越来越酷了,总是有一些坐标的问题,是吧?有一些,呃,渲染的问题,有些简单的渲染吗?你至少你要知道哪个参数该怎么设置吧,比如说你学学的是什么用力题啊?用力题就是很简单模块化编程,对吧?但是 有些参数你都不知道怎么设置,如果你不学一些这种基础性的东西。好,那关于这部分呢,我们就介绍到这里了,然后其他的呢,我们就还是放在具体的例子里面再做介绍,通过代码介绍会比较好一点。

hello, 大家好,今天给大家演示一下在 q t designer 中使用水平布局, 下面介绍他的两种方法。第一种方法呢是先拖动空键,再使用水平布局。第二种是先拖动水平布局,再把空键加入到水平布局当中。 下面打开 q t designer 的界面。 好,下面先演示第一种方法,先拖动空键, 比如说先把 button 拖动在到这个界面当中去,第二个 button 三, 下面把三个空间一起来选中, 单击右键选择布局,再选择水平布局。好,这个时候三个空间就已经是水平布局了。好,下面介绍第二种方法, 就是先拖动水平布局,再把空间加入到水平布局当中,先把删除掉在左边这里我们选择水平布局。 好,这时候把空键加入到水平布局当中,这个是 button 一, 第二个 button, oh, 把空间拖动到这个水平布局右边的时候,这空间右 右边的时候,他会出现一个蓝色的线,然后再松开鼠标,嗯,这时候他就加入到水平布局里面了。 好,这是第二种方法。好,今天就演示到这里。

好,那么同学们啊,今天的话呢,我们就是给大家呢开个头,呃,我们接下去的课程的话,主要是学这个叫做 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 应用程序。 啊,那就这个吧,托个东西让他出来第一个好不好?我们下一节课再来给大家讲这些代码啊,我们今天这节课就到这里。

好,今天主要介绍这个,呃, 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, 然后点击前面那个小三角符号, 我们看到这里边有一些那他支持的这个信号,那么我们点击第一下。


ttp 通信,那么我们先来看一下书上这句原话, tcp 是一种大多数英特奈特网络协议,那比如说 http, ftp, 这是网文件传输,这个是比如说网页浏览 都用的这种协议啊,用于数据传输的低级别的这种网络协议,那他这个低级呢?相对于我们这两个,这两个呢?网络协议是面向业务的,但我们呢是面向传输的,就更面向我们具体的实现的这个, 那他是可靠的面向流的啊,面向连接的,面向连接和可靠的,感觉好像是一个意思,是吧?你之所以可靠, 就是因为我们是面向连接的,那面向连接呢?比如 tcp 里面,他连接的时候其实有三次握手啊,你断开的时候呢?是有什么四次挥走?那这些细节其实在我们这节课里面是不 需要掌握的啊,有兴趣呢,应该是多了解,比如像像学习数据库也是一样,那你需要有一些背景知识,那理解起来会更好一点。 但对目前我们需要用到的内容呢,我们会尽量的把它讲清楚,然后面向流,面向流,就有像我们以前声音 cltel 或者文件流这样啊,我们数据呢,好像就在这个这个流里面,河流里面,我们用的时候呢,我们有个泵把它抽出来啊,到底一次是抽一行呢?还是怎么抽?那我们可以通过函数来控制 好,先理解这句话啊,下面我们再看。我们将会写两个小程序,一个是考验册用库端,一个是 siri, 是一个服务器端,服务器端里面要写的东西,其实客户端里面基本上都要写。 然后呢,我们还会有一个服务器啊,所以我们写的时候,只要把 siri 写好了,可以按他的东西呢,基本上我 我们都是复制粘贴就可以实现。那我们再看建立这样的一个连接有几个步骤呢?其实这也是很常见的一个初级程序员的面试题啊,我们如果用 qt 的话,首先用 q, 你如果不用 qt, 用其他的流程也差不多。第一个是要监听, 监听是什么意思呢?就好比我有一个四零零电话一样啊,就四零零,什么叉叉叉啊,叉叉叉,对吧?别人打过来, 那我们这只是一个例子啊,那只要只要是例子,比喻的啊,只是一种比喻,只要是比喻的话,就有不恰当的地方,那不要钻牛角尖啊,比如说这是一个客服电话,那四零零呢,就相当于是我们的 ip 号一样, 那比比喻成我们的 ip 号,后面这串呢,好像比喻成我们的端口号一样,所以别人只要拿到了我们的 ip 地址,我们端口号就 就可以和我们的客服建立一个联系,对吧?但是别人用什么 ip 号,用什么 pote, 对于我们来说我们不知道,但是一旦建立了连接以后我就知道了,那相当于我们的电话上面有个显示器啊,对方他电话,比如说幺八幺,什么七七七七啊,六六六六啊,这是来者电话,那我就知道了啊,对方的 ip 号是幺八幺,他的单号是什么?反正这是一个比喻了, 那别人又打进来一个呢?如果我们在又有一个人,第二个人也打进来了,那我不可能只提供一个客服吧?但是啊,很不好的,不好意思啊,我们提供的这个例子,就书上这个例子,他提供的就只有一个客服 啊,所以如果你起多个客户端的话,其实没有什么太大的作用啊,我们会讲清楚啊这部分,那首先 理解这一部分,首先是监听,监听是什么?就是我提供了一个客服号,电话号码,然后呢我就有一个客服人员,我就等在电话前面听铃声响了,我就拿起来,这就是监听 啊,重要的什么呢?重要是我要向外提供一个我们的客服电话,那我们客电话两部分组成,一个是 ip, 一个端口号,那别人用什么打进来?不重要啊?但是他打进来以后,我就能够通过我跟他建立的这个连接啊,我就能够获得。那么我们说这个 按照这个例子来说啊,那电话是什么呢?那实际上就是我们要讲的这个烧给他,烧给他本身他是什么意思呢?烧给他本身他是一个插口的意思,就好比这有一个插口,这有一个 插口好,然后我比如说我们的用户把电话插进来以后,他就可以打电话了,对吧?然后 像他打电话的时候这样讲可能有点反了,他大概意思这样就我的客户的电话是连接这个插口的,然后这个呢是连接到我们客服的电话的。 好,那一旦建立连接以后,我们是建立连接,被别人打进来,这个电话只要拿起来,我们就相当于是已经建立连接,只要建立连接以后,那么我们就可以他就可以往这里面发消息,然后我也可以往这里个烧铁的里面发消息,对吧? 那刚才我们说的,我们一开始我们并不知道打进来电话号码,知道他是知道的,但他拨号的时候他知道我,哎,四零零,什么什么啊?他是知道的,我的 ip 是多少,我的端口号是多少,对吧?但是我不知道他, 但是一旦建立这个连接,我把这个话筒拿起来以后,我这边就可以显示,所以我通过什么去拿他的电话号码呢?通过我的扫给他,对吧?你可理解不是射我端的一个 tdp 扫给他,我通过他我是可以拿到对方的,而这个对方的叫什么? p, 英文单词里面 pr 同倍的意思啊。啊?有一个很有名的单词叫什么? prprax 吧,好像是就同倍压力,他就是说你的同倍做一些事情呢,你就必须要去做,不然你就会觉得好像被排挤一样,甚至有可能你就会做一些啊,你不适宜的东西,本来不是应该你做的事情 啊。这个皮尔就代表是我们建立一个连接以后,我们就是一种平等的关系啊,我们都是可以相互通讯的这种同辈。 好,那么我们这个例子是什么样的呢?我们这个例子按道理啊,按道理应该是有,我应该有很多个客服人员啊,我一个视频电话,你打 这样一个,我接一个,我建立一个连接,对吧?那相当于是别人这边有一个端口号打进来了,哎,我得有个端口号 啊,不是单口号,我一个骚给的。我们建立一个连接,然后别人呢?又建立一个,那么我就有应该有很多个,至少很多个指针或者很多对象。我有一个历史,历史的啊,相当有一个历史的,我这里面就可以维护啊,那每一个呢?他又会注册很多新功能,十二册就这样会比较好。 那是一个那个动态东西,但是我们这个例子呢,他是一个静态的啊,因为用于教学吗?那他是怎么实现的呢? 总之我就一个客服。我们这个例子啊,总之我们就一个客服啊,那所以呢?我的话筒就一个, 那不管谁来,那一开始有人打进来了,哎,都没有问题,对吧?我就建立一个连接,哎,我插到这个照片在里面,那我就可以跟客人聊天, 那过一会呢,又有个客人打进来了,这边这边还没挂,这个就打进来了,那怎么办呢?然后这边又建立了一个套接字的连接,那么他不断开,我只是我的客服, 我只有一。这个客服指的其实就是一个烧铁的指针啊,一个烧铁的指针,那 我只有一个指针,我所有的吊用都是通过这个指针,相当只有一个人,但有很多个电话啊,你电话通了我就不要了,我就噔噔噔,我就跑去接这个电话了,这个电话我也不挂,所以你在讲你的,我也听不见啊,你讲你的诉求,你看我要退货啊。什么?他听不见啊? 那他又跟他联系,那过一会这个又来了,又来一个人,又打进一个电话,那这边电话又响了,那么我这个客服人员呢?哎,我又去接这个电话,那这个电话呢? 又停字在那里啊,就是也没人听了,所以你巴拉巴巴说什么他也听不见。目前我们的例子是这样的一个状态,而且你因为我们代码写的问题啊,如果有一个人挂电话的话,那这个 客服他就觉得他就会自动的把所有电话都给挂掉啊,因为我我们写的响应就是这样的,所以这是程序呢,并不是一个很完整的 ttp sorry 看着的例子,所以看代码的时候要需要注意。 那如果你自己试的时候,哎,为什么我起一个客户端啊?没有问题,我起多个客户端的时候好像达不到预期啊,本来就是这样的,那因为他的急预留的,那所以呢,我们 设计的时候他的积累其实就是 q i o d y 四啊,然后呢,他会有一个面向 sokt 的这种的虚 虚的,对吧?啊,抽象的这样的一个类,然后呢,就抽象有两个实在的可以用的,一个 tdp, 一个 udp, udp 跟刷客的比的话,他就不建立连接,我就是点对点的,这样的传输他也是有好处的啊。你比如说我们现在我们要做的 一款这种网络游戏,我们要要求的是速率,而且偶尔丢几针没有关系啊,那这种情况下的话,我们当然是用 udp 更好,特别是在局域网里面,我们其实用的是很多的局域网,本来这个网络呢就条件就比较好一点, 而且如果我们说做一个飞机模拟器,对吧,我这边一按按一按按钮他就要改变方向等等,那当然是用这个烧铁的,更并不是说他更安全啊,你网络不好的时候 他也可以重新给你发包就一定好啊,你反过来的话的话,因为你会有些呃有对你的 cpu 开销也会比较大啊,你的画面可能还会比较卡顿,但是同样的仿真程序,如果你用 utp 的时候呢,效果会更好。 好,那么那,那再多说一句啊,但是如果你传的是一个文件,这个文件里面每一个数值都很重要,要不然你计算结果就会就会很差,对吧?如果你丢掉一个包,那你整个计算结果就都错了, 这种情况下呢,你就一定要用 ttp 啊,当你发现有丢包的时候,他会重新给你发,总之他有这样的一个机制,那后面呢,就是一些特殊的啊,基于 ttp 的一些额外的一些安全的这种比较比较安全的这种协议,这些呢都我们用的在说。好,我们看他跑 跑起来的样子,那书上是提供了两个啊,你如果就把这两个跑起来,是不会遇见什么问题的啊,比如说我们这边啊,开始监听,那这是我们的客服电话,对吧?然后呢,你通过这个客服电话你点连接,那你连进来了,好,那对于我来说 我两头吗?对吧?对于我来说,我的 p 二就是我电话的那一端,他的 ip 地址,他的端口号。好,那对于我来说呢,我一开始我是不知道的,你我的 p 二是什么?但是当我拿起电话的时候我就知道,哎,其实啊,我因为我就一台机的颜色吗?大家 ip 一样,那我端口号呢?啊,他原来 他是通过这个端的口号给我打进来的,那这里面有个帮的的过程啊,你你看带带码状态的时候,他有一个半的吧,好像是就绑定,他绑定是什么?并不是说这两个端口号绑定啊,他绑定的话呢, 在应该是啊,就是我没有具体看啊,在这个网络编程里面,他指的应该是我这个相当,我不是也是一个 io 设备吗?但我这个 io 设备就我这个 io 这个读写, 他绑定到一个 ip 和一个端口号啊,他应该指的是这个时候的状态,一个绑定状态,再顺便说一下,也许我说错了,说错也没关系啊,反正不影响我这个例子,那以后再跟着就好了。 好,然后呢,我们这里面你可以往外发出去,你的发出对他来说就接收,他给你写个害呢,对你来说就是接收,对吧?但是我们前面说过他只有一个客服人员,所以他只能同时拿起一个听筒。 那我们看来看这个例子,那我就起了两个客户端,这两个客户端呢,你可以是以同一个程序,那我这两个不同的 程序,其实是啊,其实是一样的,一个程序,一个 yes 们,你起两遍也是可以的。那你看啊,一开始我起的是他上面这个, 那他的是用这个端口号给我打进来的。好,打进来以后,然后呢?先点的这个,这是一,然后再点的他这个点的二,点了以后呢?哎,我又建立了一个连接,那相当于是什么这边有两个人打进来电话,然后我这边呢? 只有一个话筒,对吧?你,我没有挂你的电话的,一开始是他打进来的,哎,一开始呢,我是在跟这个人通话, 那现在呢?我没有给你断开,对吧?我其实我这个网络没有断开,但是我人走了啊,就相当于我这有客服啊,客服客服,我们画个人好了。一个单一啊,这个单一呢?他 没有挂电话,就这个是通的,这条线是通的,对吧?他没有挂电话,但是呢这边还有个话筒啊,他听见这个铃响了,他就去接这个话筒了,然后这边断开了。那所以会造成什么现象呢?当我这边 发一的时候,我收到了,然后这个呢先打进电话,这个人呢,他发了个二,我没有收到, 是吧?你说你的,我这边已经没有人去伺候你了,对吧?这按道理呢,应该是有几个刷给他,我就应该有几个客服在这里监听。那这些如果自己想试的话呢,你可以自己去写这种程序,但这个例子本身不是这样的, 服务器本来呢就应该是面向就像我们的司令电话一样的,他应该是有很多客服人员可以去接听同一个号码的。 那我们这个理论知识啊,就先讲到这里,那下面呢我们就去实现他的这个代码。

哈喽,小伙伴大家好,欢迎收看刘静编程拍摄高级进阶教程第三期 pyqt 五以及这个于 qt 点赞有的一个对照分析啊,那么我觉得这样一节课程的话呢,对于我们刚开始来学习这个 啊 p y q t 五的话呢,我们应该来说是非常有必要的啊,因为我们有些小伙伴在开始做的时候,实际上就不知道如何把这个 p y q t 五,也就是说这个 q t 的设计的这个环节与我们的这个呃 q t 五 这个 pyqt 五这个代码相对照哎,这里设计的东西跟我们那边的这个代码到底有什么样的关系啊?这一层理解的话是非常非常有必要的啊,那么之前的话我们已经给大家讲过了,我们这个呃如何来搭建 这一个啊?用 py trump 对吧?以及 pyqt 五再加再加上 pyuic 啊,这个实际上就是 pyqt 五啊拍死的一个变异器对吧?当中利用的是 pyqt 五的一个变异模块来将我们的这个 qt 点三个啊,也是这个 qt 的这个界面设计的 ui 编意城,这个什么 py 文件啊, ui 文件编意成 p, 哎,其实说实话应该是一个转换成 py 文件对吧?那么这样一个过程转换过去的代码对应啊,我觉得我们还是非常有必要啊,把它具体其细节分析。那么上一节课的话呢,我们仅仅只是对 qt 五啊做一个简单的了解,然后呢,我们做了一个纯代码的一个分析,对吧?那么我们来了解到的是呃 pyqt 五的一个可视化界面环境 搭建,这是我们之前所学到的啊,然后我们上一节课的话,我们简单的写了一个,这个用 py qt 五啊,呃,写了一个这个代码,这个代码是什么样的代码呢?就是一个 ui 的代码啊,也就说是界面啊,做一个界面 啊,这相比我们之前的这个 tk 啊,来写这个界面,实际上大家看看啊, tk 的话,我们导入的是 tk 的库,对吧?而我们现在写的是 pyqt 五的这样一个界面的话呢,我们导入的是这个 pyqt 五的这个库啊,无非就是导入的库不一样。 然后完了之后呢,我们这个 pyqt 五的话呢,它的功能的话更加的强大啊,因为我们这个 py 啊,它的发展历史应该来说是非常的早啊,可能好像我印象当中可能比加我还要早,所以啊,它的这个 qt 的一个发 qt 的这个发展啊,它的这个底层的这个 c 加加的库啊,实际上是 很早很早的,对吧?他就已经积累起来了。那么 c 家的这个这个库啊, q t 五大家可能还不太清楚啊,他这个 q t 五的这个库啊,他不仅是基于这个,哎,有有应对于这个拍摄啊,拍摄的话我们现在知道啊,一处编影也是处处编影,对吧?也处处都可以使用啊,它是一个解释型的一个代码啊, 那么他可以在苹果平台上面去用啊,可以在我们的这个呃 u 啊啊,这个什么 windows 平台上面去用啊,也可以在我们的其他的 mac 电脑上面去用啊,这些都可以去用。那么这个 pyqt 五的话呢,实践就是这针对于我们的 呃, qt, 针对于我们的这个什么拍摄的这样一个代码来进行翻译的这么一个库,当然啊,既然有针对于拍摄的代码了啊,所以我们的 qt 啊,同样的还有针对于贾瓦的代码,对吧?将我们的界面设计成 是吧?加我的变成加我的东西,对吧?然后呢我们再加我,再进行加我,设计完成之后,我们就可以再进行什么呃,具体的代码一些操作怎么样?这是界界面的一个设计啊, ok, 也就是说我们这个 qt 啊,实际上大大的对我们的这个可视化界面啊的这个设计啊,应该是取到了非常大的帮助啊,他有很多很多的空间去可以简化我们的这个分析啊,简化我们的设计,对吧? 通过我们前面的这几集的代码的话呢,已经给大家了解到了我们这个界面该如何去设计的啊,以及他旁边包含了一大圈的这样一个呃,这个这个呃叫做什么 一大圈的,这这这这这这这空间对吧?这空间他都已经做好的啊,那么我们直接使用就行了,接下去的我们的这些时间的话呢,就是要针对这些空间啊,慢慢慢慢的一个个去进行解析 啊,那么我们呃之前的话,我们知道简单了解过这个 pyc 啊,是怎样去转换成拍神的代码的啊?通过这个拍神的一个呃,拍神拍神编辑器去调用我们这个 pyqt 五的一个代码 啊,一个一个模块啊,来进行转换的,对不对? ok, 那么我们首先我们今天要了解到这个对照分析的时候啊,我们这不是要将这个 pyqt 五的这个代码于 第三个这个代码进行对照分析嘛,对吧?我们如何来进行对照分析呢?我们在对照分析之前,我们先来了解一下一个空的这一个 q t 五的这个 啊,这个界面设计的这个程序对应到我们 qt 五的 piqt 五的这个代码到底是怎么样的,哎,这是非常有必要的,我们要,哎,我们来了解一下这个空的代码到底是怎么样的啊,以及我们这个通过手工去 编写纯代码的这个方式啊,是怎么样的,对不对?我们上一节课的话,已经通过写了第一个这个 pyqt 五的程序,对吧?我们通过利用这个 vigit 啊,利利用这个 vigit 啊 q placation 的话,就是一个进程,这个程序的一个进程,对吧?那么我们呃来写了一个 q vigit 啊, vigit 也就是说是空间啊,这空间的话,窗体里也是可以继承这样一个空间的,对吧?那么 我们来对我们的这个手工纯代码的方式就可以有一个, 呃,写出来这个 gui 的一个界面啊,这是一个空的一个程序,这是我们上节课写的啊,当然还有一种方式就是我们通过这个 qt 点三个啊,这样一个设计来针对性的自己可视化的一个界面规划,对吧?哎,出来的一个界面啊,这个 的话出来之后就是一个类啊,这是我们之前也是了解到的啊,那么我们呃需要这里需要的是要理解啊,我们这个 q t 点三啊, q t v 啊,它是一个基于所有空间的这个积累啊,它是包含窗体、空间按钮、文本等等的这样一个 一个积累啊,这个积累是什么意思呢?其实就是负累对吧?他是包含某个窗体的对吧? ok, 那么我们今天啊,马上来制作一个空的窗体的程序的样子啊,我们通过 qt 点三个的方式来进行制作啊,我们来看一下,有的小伙伴肯定啊,已经在之前的工作当中啊,已经已经啊,已经就是了解到了,对吧?你这个怎么去做啊?那么我们先把这个上一个程序给删删掉,我们重新来制作这样一个界面啊,好了,那么我们来看一下, 这一次我们是第三期啊,我们来制作一个第三期的这个 qd, 第三个, ok, 我们来进行设计啊,设计的话呢,我们有两处,第一处我们是从这个项目地方右键,对吧?然后找到什么就找到这个, 哎, external tours 啊,一个地方啊,然后找到 qd 第三个,对吧? qq 第三个另外一个地方啊,还有一个地方就是在这上面啊,工具栏 托尔攻击栏,托尔攻击栏,这个攻击栏这里呢,有一个叫做 external 啊, torse, 对吧? qt 点三个啊, 那么小伙伴们我们现在的话呢,我个人觉得我们在编写这个 py charm, 在使用的时候呢,我们进来已经进阶到啊,慢慢慢慢从零基础啊,慢慢进阶到高级,到进阶到高级的时候呢,有的小伙伴目前,呃为止可能还在用这个中文,对吧?中文的这个呃,编辑 一起啊,中文的这个开发环境,实际上啊,大家要知道啊,用来用去是这几个英文单词,对吧?所以我建议你也不需要再去把它翻译成中文,当然你也你也可以把它翻译翻译成中文,对吧?当你配置完成之后,也可以把我们之前的这个 教程当中把这个点 b ak 这个扩展名给去掉,我们就可以把这个资源文件变成中文了啊,那么我个人建议的话呢,实际上没有必要再去把它变成哎,中文啊,我们就用英文的开发界面就可以了啊。 ok, 那么这个时候我们来打开它之后,我们发现啊, 我们现在来新建一个设计师的界面,对吧?这是 qt 第三个啊,大家看到啊,我为什么说 qt 第三个啊?实际上是他这个地方是这样的, qt 第三个啊, qt 设计师有个翻译对不对?有个翻译的啊。好了,那么我们来看到我们这个地方的话,有很多的选项, 大家看一下啊,这个选项是一个模板,大家看到没有?左侧的话呢?是就是一个模板啊,风啊,然后 dialogue with 什么? buttons buttons, bottom 是什么意思啊?就是有几个按钮在这下面啊,就是右侧显示出来的一个效果,我们看第二个啊, 呃, dialogue with buttons right 啊,就是在右侧对不对?在右侧的一个按钮, ok, dialogue result buttons, 也就是一个 dialogue 啊, dialog 什么意思啊?是没有我们这个 怎么这个这个这东西的啊,就是没有这种,没有这个这个,呃,这个放大缩小这个东西的,对不对?放大缩小的这样一个按钮的啊, 那么这就是大老哥。我们这呃眼前的这个东西其实也是一个大老哥,对吧?也可以自首,也可以说是一个大老哥啊。好,那么我们下面的话呢,有个叫做 man man window 啊, 门温度,这个门温度的话呢,我们是上节课给大家有用到啊,这个门温度他有什么样的好处呢?他有自带的一些菜单栏,有自带的一些,比如说是,嗯,排序,对吧?比如说中间的一个结构啊,那么这个地方实际上是对我们的 vigit 这个,呃,这个这个空间啊,它的一个 v 九的这个积累的空间,一个一个一个叫做什么?重写啊?重写,他重写了很多个功能,也就是说我们日常的在开发的时候,我们可能更多的会去使用这个 man window 啊,因为利用 man window 的话呢,我们就会 可以有一些就是说他已经制作好的功能,我们就可以直接去使用了啊,这个就是没有 window 的一个好处,对吧?没有 window 的一个好处,那么最根本的还是这个啊, vigit w i d g e t。 啊, vigit w i d g e t。 啊,这个 vigit 又来什么用?这个 vigit 就是一个最基础的一个模板啊,最基础的一个积累,他的一个窗体空间啊,他的一个窗体空间,或者是我们其他的按钮空间,实际上也是积累是继承于他的啊。那么我们右侧的这个地方, 呃,我们的这个界面大小的话,我们他其实有这个啊, q v g a 啊, q v g a 以及 v g a 的一个这个其实是用在哪里的呢? 这些的,呃,方式的话,实际上是它是用在一些那个呃小的,小的设备的啊,就是小的一些平板啊,小的一些, 嗯,这种这种可可嵌入式的设备啊,因为我们 qt 的话,我们杰克 c 加加,我们会做一些嵌入式的开发,会比较多,那么我们这个地方呢,屏幕大小我们使用默认大小。好了,因为我们做的是桌面单的程序啊,桌面单的程序我们可以完全可以用这个默认大小啊, ok, 那么我们此时来 来创建一下,选完之后我们创建一个,创建一个,我们此时的话,他这个地方显示了一个 phone, 也就是创体,对吧?创体创建名称是,呃,昂昂抬头,昂昂抬头的也是还没有被命名啊,我们此时可以命个名保存一下,点击保存, 双体另存,为什么呢?双体就另存,我们这个 ljy 要死。好了啊,我们这个地方另存,为什么呢?我们就另存为,比如说是 alj, 呃,这个叫做 aljy, test 零零三, ok, 就 test 零零三,零零三,好了啊, 了解 ui, test 零零三, ok, 这时候我们就是怎么样?这是一个 ui 窗口,大家看到没有,这是一个 ui 啊, ui, ui 是什么?一个意思啊,这个 ui 其实就是啊,就我们就是一个设计界面嘛,对吧?此时保存就 ok 了,对吧?点击保存。哦, 好了,那么刚刚讲到了一点啊,就是重要的一点就是 q v j, 这个地方是非常重要的啊,这个地方 q 啊,其实都是大写的啊, q v j t, 对吧? q v j, 这个 q 是大写的,大家注意啊,这个地方,呃,在拍摄当中,我们这我们的这个 大小写是非常有区分的,对吧?包括我们 c c 家家啊,包括我们的这个加了啊, c 十二,这些大小写都是有区分的,所以大家呀,在编写代码的时候一定要注意这个大小写的关系啊,大小写的关系, ok, 那么 我们这个地方我们来继续看下去啊,我们现在是一个空的吧,对不对?现在是不是空的窗体啊,空的窗体的大小,我们可以来看一下这个属性啊, 四百乘三百啊的这样一个大小,默认是四百乘三百,我们看到这个属性啊 的一个属性,就是他的专门处理的话,他里面分成 x y 以及这个啊,以及这个宽高,对吧? xy 是指这个从左上角开始的啊,左上角就是说屏幕的左上角,在这个最底方啊,这个地方,屏幕的左上角,这窗体的左上角,这个左上角,我们就是 xy, xy 从零零开始啊,最左上角是一个啊,大家看到没有,我鼠标锁锁点的这个地方左上角是一个零零啊,零零,当我们屏幕的左侧啊,我们就是屏幕的这个水平方向的,就是 x 啊, x x 就有这么多,对不对啊?屏幕的垂直方向啊,就是 y 啊,屏幕的垂直方向就是 y, 那么他的呃, xy 就是这样子来看的啊, xy 就是这样来看的,然后呢,也就是说我的这个窗体啊,待会启动的时候,他会在我们的这个零零 这个点,然后呢,他窗体的宽高就是啊,宽高就是四,宽是四百,高是三百,这是他默认的一个情况啊,绝美区域啊,那么我们把这一个其实可以记一笔啊,那么 在我们的这个什么 q t 设计 t q t 点三个啊,第一 s i g n e 啊,在我们的 q t 点三个啊 啊,设计师界面,设计师界面,我们的看他的属性啊,这个绝美垂这个属性是非常有必要去认识的啊,绝美垂直属性,我们来看一下,呃绝美垂直属性啊, 啊 g e o m e t y 啊,这么去属性,那么这个属性的 x 代表代表啊,代表啊 啊,窗体出现这个叫做出现的位置啊,位置是在啊这个屏幕啊屏幕的左上角,我们看看啊,是不是这样啊,左上角,我们待会来看一下啊啊 y 的话呢,我们啊代表 窗体哎,左上角水平方向的零的位置左上角水平方向方向的零的 啊,零零的位置啊,我们其实这个在以前的这个 vb 的基础的界面啊,就是可视化桌面的开发的时候我们就已经给大家讲到了什么,就已经讲到了我们这个屏幕左上角这个位置其实就是零零,对吧?啊,或者我们一些相对的 一些窗体的一些情况,屏幕啊或者相对窗体的左上角一半也是零零啊,那么窗体出现啊,呃出现的位置是在屏幕左 啊,上脚垂直方向外的话是垂直方向对吧?垂直方向哎方向的 零的位置啊,零的位置, ok, 那么下面还有一个宽高对吧啊默认宽度四百啊,像素啊,这个地方单位应该是属于像素啊,像素 啊,四百啊,那么高度默认高度啊,默认高度是多少?三百,对吧?三百,那么我们来看一下啊,是否是这样子啊,是否是这样子, ok, 我们保留一个空的创体啊,我们把它关闭掉,关闭掉以后我们回到拍全,我们看到这个地方我们刚刚保存的是 ljyt 四零零三,对吧?我们现在来生成一下啊,通过 py iq ipyuic 来生成,对吧?我们点击这个工具啊或工具,然后呢点击这个 xtoner, 然后再点击这个 pyuic, 对不对?此时我们就可以生成同名文件的 py 文件啊,我们来看一下,右键点击生成哦,已经生成了,对吧?大家看到了,呃,他的一个变化,对不对?相同文件名称的一个 啊,扩展名是不一样的,点 py 对吧? py 文件啊,我们上现在双击打开它啊,双击打开它,那么这个的话呢,是我们其实在之前编意的时候为什么是相同名称啊?因为我们在这个地方设置的时候是相同的,大家还是要复习一笔啊。这个地方我们来看一下,呃, pyus 是不是我们用它来进行变异的,因为它毕竟变异的时候我们采用的是拍神变异器啊,拍神变异器,拍神变异器的时候我们调用,首先 m m 是不是猫斗,对不对?我们可以理解成猫斗,我们来调用的是一个模块啊,拍神,首先是拍神变异器啊,拍神变异器,然后我们调用的是, 哎,这个地方其实也可以说是他的一个是解释器啊,解释器对不对?那么我们然后呢就是调用一个模块啊,一个参数,参数是模块的名称 py qt 五下面的 uic 下面的 pyuic, 对吧? 我们将当前文件的名称,也就是发由内当前文件名名称转换成什么呢?目标,哦不就对不对?转换成目标文件是什么呢?杠杠欧,目标文件文件名称 without external, 因为默认的话呢,是 我们是有这个哎 x 腾讯默认情况下,我们这个文件的话,他是有一个这个 u u i 的一个扩展名,对吧?我们转换过来的文件名称是不要让他有有有这个什么扩展名为 ui 的啊, ui 扩展名就不要,所以我们这个地方叫做 without without 什么呢? extent extension 对吧? without extension 啊, without extension。 那么我们后面的话呢,再加上自己手工连接了一个点 py 啊,这是一个他的一个呃叫做什么扩展名啊?手工连接的对吧?手工连接的好,我们现在回到这里,我们刚刚给大家内串命令啊,做了一个简单的解析啊, 那么我们把这串魅力简单解析的话呢,还是写一下啊,因为我们之前好像是没有给大家去去续写过啊。 补充一下,补充命令解析啊。呃,补充,呃充这个什么 p y p y u i c 命令解析 啊,命令解析, ok, 那么我们来看一下,把这一串拿过来,对吧?呃,那么使用这个 python 啊,点 x e 啊,解释器,解释器,然后呢? 呃对吧?呃,这个地方我们就是来说明一下,说明的是什么呢?杠 m 啊,表示 model 调用 某个模块啊,某个模块啊,叫什么模块呢?就是调用的是 pyqt 五下面的 pyuic 模块对吧? pyu 的 uic 模块啊。 啊,这里啊表示什么呢?吊用,吊用 啊,这个模块,对吧?这个模块,那这个模块的话呢,也是我们自己已经下载过的啊,在我们相应的包文件里面,我们是不是之前有这个呃,通过 pip install 然后 pyqt five, 对不对?这样一条命令就可以把它 下载下来,并且进行安装,然后呢我们这个地方杠欧就表示目标文件啊,杠欧啊欧表示啊,目标啊,生成,生成目标, 生成目标文件啊,目标文件。那么呃,这里,呃使用什么呢?使用这个,这个我们 就是表示当前的文件名称啊,这个啊表示,呃,这个文件名称, 这标是什么?什么文件名称呢?就是需要转换的啊,转换的原文件文件名称名称, ok, 那么我们下一条我们来看一下啊杠欧就是表示要生成啊表示, 呃需要生成目标文件,对吧?需要我生成目标文件。那么这里使用这个什么呢?呃相同的文件名称,但不含扩展名啊, 这里使用这个这个表示,哎表示于原文件 相同的啊,余额文件相同的, 哎什么呢?文件名称,但不包含扩展名, 扩展名的目标文件,对吧?那么扩展名什么呢?扩展名,我们扩展名啊,我们通过,哎自己连接连接点 py 啊,那么最终表示, 那么啊最终什么呢?表示什么呢?表示生成的是,嗯,拍森的拍森类型的文件啊文件。那么我们这个 地方呢,给大家还是细细的解说一下啊,是非常有必要的啊,好了,那么大家呢还是要去理解啊,那么我们现在呢就是相同文件文等名称的一个目标的 py 文件,对吧?我们自己来连接的, ok, 我们发现生成的这样一个文件之后,上面的都是一些什么?拍摄当中我们使用这个 啊井号来表示啊,使用这个井号来表示注视,对吧?使用井号来表示注视,那第一行是有作用的啊,第二呢,我们是采用 utf 八编码的形式来进行生成的,对不对? ok, 那么我们来看到啊,这个地方有一个说明啊,就是啊,凤 凤也是,也就说是一个窗体接口,通用的,来自于什么什么,哎,这一个对吧,来自于这个文件的是不是他已经说明了幺九 its 零零三点 ui 的一个,哎,来来 生成的啊,同样的这样一个文件来生成的啊,那么酷瑞的 bi 什么呢? pyqt 五 ui 啊啊,来来,他来创造的啊,他五点一一,三点一,我采用的是这个版本, ok, 那么我们来看一下警告啊,说明一条,我们他这个说明啊,所有的改变。 made in this fire will be lost will be lost will be lost。 这个文件当中啊,我要比老师什么可能,可能会有所啊,生成的这个文件可能会 有所丢失啊,对吧?可能会有所丢失,我也不知道丢失什么东西啊,那的这个东西总归是为了安全起见吧,人家都会去写一句的,对吧,不保证可能生成的东西完全一样啊什么的这种,但是基本上生成都是可以的啊,那么我们主要的呢,还是要看这个地方,这个地方我们上次啊 上一节课程当中已经给大家解释过了,应该来说是解释还是非常详细的啊,那么这个地方首先是调用 from fram 什么酷的名称,对吧? pyqt 五啊, prqt 五,然后呢,导入的是 py, 呃,这个 qt 的一个啊,其实就是导入 qt 的一个核心啊, qt 核心, 这是一个 dll 文件啊, ddll 文件啊,这也是一个,这是这也是一个三个 dl 文件动态链接库的一个啊,类名 啊,那么我们导入的是这三个啊,这三个好,我们可以其实从其实你如果说想要仔细的去看的话呢,你可以去找到你自己的这个呃, pyqt 五的这个文件啊,去对照就行了啊, 那么我们这个地方我们就不继续往下去仔细去看了啊,那么我们来主要是对照我们这个地方后面的这里我们看到啊缝,对不对?首先 他是一个凤啊,凤这个凤其实表示的是一个窗体嘛,对不对?就表示一个窗体啊,但是他这个类的名称首先就生成一个类嘛,对吧?我们上节课是不是给大家讲过生成一个类啊?生成一个类,我们来对照一下啊,这一条代码 类当中是有两个方法啊,对吧?这是一个方法,这是两个第二个方法,对吧?那么来看一下第二第一个方法啊,第一个方法的话其实没多少代码,其实就是赛特啊,不就是赛特吧?赛特 fui 什么意思啊?我们来通过音中音来翻译一下,大家看一下,翻译一下就是, 呃,安装 ui 对不对?是不是?安装 ui 就这么简单吗?那么 ctrl 不就是安装啊,然后 ui 就是界面,对不对?安装 ui 界面那么传入的是一个形式参数,这个形式参数是行餐,是我们是一个缝的一个行餐,嗯,至于 行餐时餐,我们在以前的这个基础课程当中已经跟大家讲过了啊,就要行驶参数这个地方进来都是一个行驶参数啊,行这个行驶参数的话呢,我们这个地方其实是一个,嗯, 这个地方其实是一个,是一个实力化的一个对象啊,这个实力化的一个对象实际上就是一个窗体,对吧?实际上是一个窗体啊,是一个位置这样一个窗体传进来啊,位置这样一个床体传进来,传进来之后我们就可以位置的是什么呢?位置就是这样一个东西啊,就是我们之前的这样一个, 之前的一个创题,对吧?之前就是一个 ui 的之前的一个 q v j t 嘛,对吧? q v j 啊, q v j 的这样一个窗题,我们可以对他进行传录啊,对他进行传录,那么我们这里的话呢?呃,传录的时候我们待会要调用啊,传录成之后才可以调用嘛,对吧?然后我们来把这个地方 set 什么呢? object 啊?内 啊,这个其实就是我们之前的这个名称凤,对吧?哦,不就,那是什么意思啊?对象的名称是凤,这,这个我们有所对应的,我们来看一下啊,对应过来我们的这个地方,我们重新来打开这个工具, external tour 啊, p y 啊,这个这面 q t 第三个,然后我们来,我们通过这个,此时我们不要创建啊,我们通过打开,点击打开, 然后打开这个幺九二 t 四零零三啊, ok, 我们打开之后,我们发现啊,这个地方 object the name 是什么啊?这个目标的名称,也就是这个 form 的名称,这个 form 的名称,对吧?这个 form 的名称是什么呢?就是这个他的这个窗 form, 其实就是窗体的意思啊。 object name 其实就是指这个窗体的名称,就是叫做凤啊, fo 啊, m 啊,我们给他取了个名字叫做凤啊,对吧?那么这个呢?我们其实 啊,这个我们叫做什么呢?我们来写一笔吧啊? oppoject 的内容啊,窗体对象的名称,表示窗体对象的名称, 好,我们来写这个地方,这个地方,呃,这是这个属性,对吧?这属这个属性啊,我们再换一个属性啊, object name, object name, object name, 好,这个对吧? 这有二不留的内容属性,这个属性呢,就是表示什么呢?表示窗体对象的名称, 窗体对象的名称啊,窗体对象的名称,那么其实就很简单,我们就写到这行就行了啊,表示窗体对象的名称,因为为什么呢?这个窗体对象其实就是指这个, 嗯, q 位置的一个实力化对象啊,注意,窗体对象其实就是指啊, q 位置词 w, w, i, d, g, e, t 啊的实力化对象的 实力化对象啊,实力化对象,某一个实力化对象,那么这个实力化对象我们可以给他取一个名称,这个名称其实就是这个 form 的名称,对吧?这个 form 的名称, ok, 我们继续看下去啊,来,继续来对应过来,我们来看到他生成的这个 resides reset, 通过这个 resets 是什么意思呢?其实就是 这个,其实就是一个,嗯,而这个 set object, 我们 set object, 其实我们来看到啊,这个是 qt five 当中的一个设置对象的名称, 对啊,设置,对啊,没错,我们这这个地方还进行了一点点的补充啊,一点点的补充。 set object, 那么他是对应到对象的设计师界面,对吧?他是对应到拍神 代码中设置窗体的啊,设置窗体方法啊,设置窗体名称的方法啊,方法 ok, 哪个呢?就是指这个,对吧? 双,这是双体名称的方法,这个 set of 就是内啊啊, ok, 那么我们来再看到啊,这个地方上面,呃,这个 recise, recise 其实是指,就是指什么呢? recise 啊,那默认情况下他这个地方,呃,因为是左上角嘛, 所以他就默认情况就是零零了啊,可能就是零零了,那么我们瑞塞斯其实是对应就是从啊重新调整大小,对吧?调整窗底的大小啊,我们这个地方我们来把这个函数单独来列一下啊,瑞塞斯,那这瑞塞斯函数是什么意思呢?其实就是指啊作用 重新啊调整窗体大小啊,窗体的大小,大小 大小,那么这个大小其实很简单,我们上节课给大家有解释过,但是没有具体的写下来啊,我们这次给他彻底的写下来啊,那么他的一个有两个参数啊, 有两个参数,对吧?啊?第一个参数,我们通过这个四百对应过来,对应过来,我们看到这个地方其实就是什么?就是他的一个宽度,对不对?三百就 高度,对吧?哎,所以他的第一个参数其实就是第一个参数表示宽度值,宽度值啊,第二个参数表示高度值,对不对?高度值,那么举例其实就是指这样的一条 啊,对吧?举例我们来看一下啊,就是放点 recess, ok, 放点 recess, 这个是应该是一个小写啊,对啊,大家要注意,他是有大小写之分的啊,放点 recess 啊, ok, 那么我们来看一下啊,我们也可以通过这个, 呃,通过点击 ctrl 键,然后再点击鼠标左键可以点进去,哎,大家可以看到啊,这里面设置他宽高,对不对?他有这个啊,他有这个这个地方啊,这个地方是属于在哪里呢?我们可以看一下啊,在, 在我们的,在我们的这个很里面的一个方法啊,很里面的一个方法。呃,这我们应该是要到这个 qt p y q t 五这个这个地方。 p y q t 五的这一个方法里面啊,这里方法太多了,一下子也很难去找到,去定位到啊,那所以还是大家一定要记一下,对不对? p y q t 五的这个核心里面啊,对吧? p y q t 五的这个核心里面去设置它的一个宽高, 要找到的是要要对应到啊,这应该是这边啊,应该是这一边,大家看一下啊,这是上面的绘图的一个东西,对不对? graphic 啊,我们这个地方应该是 q veget 啊,设置它的一个宽高啊,我们来看一下 wedges, 应该是这一个方法啊,这就对了啊,对吧?大家来看一看到啊,这个 wedges 的它的一个所在的,它的所在 的一个。呃呃,一个一个他的一个拍摄代码所在的 页面啊,他是在哪里啊?他这个文件到底在哪里啊?大家看到在这个用户文件下面的,对不对?在这个用户文件下面啊,大家可以又通过这个地方右键,然后来找到秀音 x pro 啊,这个里面应该有很多啊,大家看到吗?啊?他都是一个 q t 的 p a q t q t five, 大家看到吗?这 q t q t five 我们安装在这里面啊, p y q t 五是不是安装在这里啊?当前的用户文件下下面啊?哎,我们我们所有的 所有的通过这个 py 管道啊,下载下来这个文件就安装在这个地方,对不对?然后我们通过这个地方,我们就找到了有一些其他的一些空间啊,对吧? qtfi 以及 qtv, 这次有哪些呢?有很多,这里面还有 button 啊,一些绘图的 slide go 啊啊,一些一些拉条啊啊,一些按按钮啊,一些带 lug 啊,一些这个 come on botton 啊, line 啊啊, file 啊等等,对吧?我们我们这个地方有很多 ktv 这词,也是这里啊, 包括我们这个里面有一个 risss, 对不对?通过这个 q 位置, q 位置最基础的一个代码啊, 最基础的一个负累啊,这个负累里面就是有这个地方,对吧?就是有这个瑞塞子,他的一个宽高啊,宽高。好了, 那么我们来看一下啊,这个地方我们是不是已经看到了?已经看到了,我们点进去刚刚已经看到了啊,应该大家不要找错啊,找的话应该找这个 pyqt 五的一个位置,对不对? pyqt 五的一个位置啊,毕竟我看看,我们看看这里面他有两个参数,这个也可以通过 q size 的这个 仓鼠来进行设置,对吧?啊?我们后面啊,再逐渐来使用这个东西啊, 好的,那么我们再接下去看下一条啊,再给接下去看下一条,这个下一条呢?我们实际上就是一个 sf 点调用了他,对不对? sf 点啊?啊?这个 retranse retranslate 什么意思啊? re translate, 我们可以把它来查词查一下啊, re translate 啊, 重新设置什么东西,对不对?圈子来的,是不是一个翻译啊?啊?是不是一个翻译的意思啊,对吧?我们来看一下啊。 呃,百度来看一下。瑞圈斯莱特是什么意思呢?啊?圈斯莱特就是翻译嘛,对不对?把什么或者把什么转变为什么啊?瑞圈斯莱特啊,就是重新翻译一下或者重新转变一下这个 ui, 然后呢对他来进行这个传入的这个对象啊,传入的对象哎。呃然后来来调用这一块啊,重新重置一下,对不对?重置一下。重置他成什么呢?重置他成这个 qt cool 啊,调用一个 qt cool。 qt cool 的话呢?我们也是在这也是有的啊,对不对? 我们是不是在我们刚刚的调用的这个文件啊?我们我们其实已经找到过了,我们不再去找了,刚刚已经找到这个 qq 号的一个文件夹了,对不对?啊?我们看到这个 qq 号下面有一个 q 号 啊, q call, application 还 translate。 那这个地方,呃这是一个,我们直接可以点点过来了啊这个这个地方应该是唯一只有一个我们我们这样子的唯一只有一个的话我们可以直接找到他了,对吧?可以直接找到他了。 qt call 对吧? qt call 这是一个文件夹,单 度的一个文件夹,里面有很多很多的一个核心的量的一些东西,对不对?哎可以有一些什么,一些系统的一些时间啊,一些系统的一些酷啊,一些操作系统的文件啊, 等等啊,非常重要的一些东西啊。长安没有对吧?嗯,大家可以通过呃这一个拍神代码的一个,呃他的一个,嗯嗯,就是就是这么一个 api 吧,对吧?差不多是一个 api 就可以看到了他的一个作用啊就可以。 ok 那么这个呢其实他最基础的我们可以看一下啊,这个类他是基础继承于哪里呢?他其实继承这些东西啊,都是继承于这个 oppo 句子啊,都是继承于这个 oppo 句子啊,对吧? ober 这个 oppo 句子才是最最根 根本的一个东西啊。啊,这是 q t 里面的东西啊,对吧?那么我们不多讲了啊,这是我们直接调用这个 q t five q t five 这个库就可以了,对吧? 好,我们这个地方呢, qt call 啊, qt application 对不对?呃是一个,最后再返回是一个转换过来的一个对象啊,将我们转换过来这个对象呢?我们可以设置 窗体的标题啊,这是窗体的标题啊。什么什么默认情况他是一个缝对不对啊?默认情况他是一个缝啊。 哦 ok, 这个地方有个 set set window title 啊,上一节课我们是不是用了 stat window title 啊,来设置我们窗帘的标题啊?实际上我们这个地方呢就默认情况已经给他设置过了啊,通过这个我们我们设计界面的时候就已经设置过了他的一个界面啊,对吧?我们可以把它变成。呃 我们待会进行转换啊,转换过程之后我们还可以进行设置,我们来进行观看好了啊。 ok, 我们下面的话呢,还有最后一条啊, qt mate mate qt 扣,然后呢? q mate 什么呢? object, 然后有一个 connect 啊? connect mate object 有个 connect。 什么有个槽, 死老子槽连接我们槽的名称,这个槽的槽是什么槽呢?就是指我们这个通过我们这个 qt 的一个核心代码去 呃, qt 当中最为关键的就是一个信号语槽啊,大家先进行一个了解吧,但是我相信,呃没有用过这个 qt 写代码的同学可能是可能会听不太懂啊,但是没有关系啊, 但是你记住有个信号槽的一个关系就行了,实际上就是一个 qt 的一个就相当于是 捕获 qt 当中的某个事件啊,事件其实信信号,我们其实就是一个事件,点击单机事件其实就是某个信号啊,可以这么去理解,嗯,好,那么我们简单的在后面加一条啊, qt 当中的理解啊, 啊 q t 啊中信号的理解,那么哎,比如说什么呢?比如说,呃这个单机事件对吧?单机事件啊,那个,呃或者说是这个某个 某个什么信号呢?比如说是超时超时信号啊,等啊,都是等啊,都是这个 q t 中 的啊, cqt 中的型号啊,可以,实际上啊,说到底其实就是某个说到底啊,说到底其实发生发生了某个事件说到底啊,说到 啊其实就就是界面上上面发生了某个事件啊,发生了某个事件 某个事件或者是某个信号啊事件可能是理解起来会比较的单一啊,其实其实或者发生了某个 信号会比较的准确啊,信号会比较准确。 ok, 那么我们我们来直接来生成自己再来生成一下啊,我们这一条啊, ok, 我们来执行 ljy 零零三 三自己来写一条幺 j y 零零零零 l j y 零零三吧啊零零三, ok, 我们来 现在我们来调用一下这个代码,对吧?调用来调用一下这个代码,再来调你一遍啊,以前已经调用过了,对吧?我们自己来写一下看看啊。 input 什么呢?首先 input 这个 sis 啊,是之前是不是已经给大家讲过啦?另外一个 input 什么呢? input 我们可以调用一下这个, 我们我们这一次可以传入这个微决策啊,不一定要传入这个闷微决策,对不对啊?我们这次此时传入这个微决策,哎,这个微决策的话,我们在什么 p y q t 五这里面的微决策里面就可以了,对不对啊?我们来 啊,这个是酷酷的名称 from 酷的名称,然后呢是一个音炮的导入,我们 只要导入这个啊, q apply k 群啊, q apply k 群以及这个 q 位置就可以了啊, q 位置,那么我们此时这两个,这两个库我们导入进来就可以了啊, 对吧?此事要倒入库啊,我们写的时候呢,嗯,程序的思想啊,待会还是要给大家再明确一下啊。 那么首先我们倒入库之后啊,我们来有一个 f 一句,对不对?这个 f 一句我们其实是可以不写的,我们之前是不是有给大家写过这个 f 一句啊?那这个 f 一句我们呃 name 在判断的时候呢,就是指本身的这一个, 就本身这一个文件在写入的时候模拟了一个路口,其实这个路口我们知道啊,拍伞,我们在写的时候,这个程序啊,我们就像批处理一样,一条条代码 执行下来的,对不对?实际上我们可以只要把这个程序作为一个,这个文件作为一个主路口的话,我们其实就也不需要写这个一辅一句,对吧?也可以不需要写这个一辅一句啊,当然写了这个一辅一句的好处呢,其实就是我们可以在其他代码在电路的时候呢我们可以呃 判断对吧可以不写就是可以不会创业腐具当中没人当中的这个代码可以不会不会被调用,哎这么一个好处啊,当然我们其实可以不写了对不对哦那么我们这里面先开始呃就直接布写好了,我们其实这个地方其实可以去布写的啊, 我们来看一下直接开始来写这个 q apply k 讯来首先来调一下啊 q apply k 讯 app 对不对啊?这还是要掉的对吧? q apply k 讯啊那么我们传录是什么呢?传录的是一个呃拍摄当中的一个参数 argb 对吧这是这还是非常重要的啊这个地方是什么呢? 首先这里面是我们这个导入的是系统类拍摄的系统类 啊,我们一条再解释一下吧啊导入啊拍摄系统类啊系统内裤 ok 第二条我们就是导入导入 pyqt 五类啊用到的内裤啊内裤一个是啊 oppolik 型 啊啊 placation 应用程序类对不对?程序类啊核心类啊,那么还有一个呢就是空间的之类 q 五 v 九 啊空间的之类啊之类对吧啊大家应该这里这几条应该都要知道的啊。好我们来再继续看啊。呃 plak 选我们现在就是把这个应用程序类进行实力化。 好我们一条条来稍微解释一下,因为呃有的小伙伴可能半路插进来啊,就是说是听这样一个程序啊,如果说你有之前的这一个,嗯 呃从我们的零基础拍摄教程啊老刘的零基础拍摄教程从第一期到一百二十五期的一个经验的话呢啊,学习之后你就可以怎么样呢?就拥有了这样一个啊,就是累的一个概念啊, 你就可以知道啊,我们这个地方你要进行实力化一个类,对不对?这个地方其实就是一个类库导入的是一个类啊,一个库呢,实际上就是一个类 class, 那么这个地方呢?实际上就是一个,呃, 这个基地其实就是一个实力化一个类,对吧?实力化一个类啊啊?通过构造函数,构造函数传入啊,传入这个 python 的参数, python 的应用参数 啊,有有拍成的用餐数啊,系统用餐数,对吧? a l g v, 我们可以点开来看一下啊, 这个地方是一个空的。 real 什么呢?它是一个 real value, 真的一个值,对吧? list 啊,有一些什么牌子,那些其他的一些东西啊, 这样一些东西会被装载进来的一些东西,我们就可以通过这个参数来进行传入啊,盘成的一些这个参数进行传入,那么有什么就传入什么吗?对吧?我们刚我们到时候可以看看到底是有什么东西,我们可以 打印进来,打印出来,对吧?可以也可以打印出来吗?他是一个全局变量啊,大家注意啊,当然是吧,他这个地方是一个全局变量啊,所以也就是说在后面也有可能进行传入的啊,这样一个参数的一个值,我们可以进行打印 啊, print 进行打印,对吧?拍摄一旦进行载入之后呢,我们就可以进行打印,此时我们其实就可以先看一下了啊,通过右键与 run 啊,可以看看什么都没有,对吧?有一个什么呢?他就有一个这样一个文件的名称被打印出来了,对吧? 他是一个什么?他这是一个列表啊,这是一个列表传入的第一个文件的名称,也就说是 a 九二零零三啊,就是把自己文件的名称传进来,这个文件的名称传进来,传进了什么呢?传进来之后就到这个 q opla k 群当中,我们就去构造了一个把这个文件,对吧? 把这个自己的这个文件名称自己给给传进来了啊?一个一个列表传进来之后,他可能就会去检测到,对吧?检测到 q aplux 就会去检测到,检测到这个列表,对吧?这个列表这个列表他可能会在初始化的时候进行应用啊,进行应用初始化的时候我们就要载入进来,对不对? 好了,那么这是我们打印的一个拍摄的一个参数,到底是什么,对吧?这个时候我们参数是 一个就就一个文件的名称啊,有一个文件的名称,我们拍摄直行过来的时候就会有的啊,就会有的。那么这个地方呢,我们其实就是实力化一个类啊,实力化一个类,然后呢传入我们的拍摄的应用参数,其实就是这个参拍摄的应用参数其实就是一个拍摄的文件名称,对吧? 啊?这里啊打印打印出啊,这个当前文件名称的啊,列表啊,包含当前文件名称的, 包含当前文件名称所在路径名称。呃,应该是具体路径当前文件 具体路径的名称,对吧?具体绝对路径?应该是啊,绝对路径,所谓绝对路径啊,就是包含从根目路开始啊,然后到文件的名称这里啊,我们绝对路径的名称啊,绝对路径, 我们把这个稍微写一笔啊,稍微写一笔,这个绝对路径,绝对路径, 那么路径说明啊,这有两个,一个叫做绝对路径的概念,一个叫做相对路径的概念啊,大家要明白的,绝对路径,我们一般来说从从根目录开始到文件的名称啊,从根目录,根目录开始的路径啊,路径 详细路径,对吧?详细路径啊,那么还有个是叫做相对路径啊,相对路径呢,其实就是相相对于某个文件 目录啊,目录的路径啊,相对于某个文件目录的路径啊,不会出现详细的这个路径的名称,对吧? ok, 相对路径,我们往往啊,通过一些啊, 相对路径,路径往往有一些代表性的东西啊,往往有一些符号代表,符号代表啊,代表。 ok, 那么什么呢?我们是点这个点啊,点 点表示当前路径啊,当前路径点点表示什么呢?这个叫是点点啊,表示上一层,上一层 路径啊,上一层路径那点点杠,点点杠啊,那就是上一层的上一层路径,对吧?哎,好,我们往往啊,就用这两个,哎,表示的比较的多啊,表示的比较多。好了,那么我们接下去呢,有了这个应用程序之后 后啊,我们最后就是为了程序退,程序退出而使用的,对吧?程序退出而使用程序退出的话,我们是有一个监控的啊,通过 six 的一个,呃呃,退出 excite 啊,退出之前我们监控的什么呢?监控的是 app 的 excite, 这个时候呢,这个地方其实就是监控程序的界面,监控程序退出的时候,对吧?监控,我们这个进程退出, 退出之后呢,我们会有一个执行一个退出的代码啊,实际上这个地方退出的是一个,执行的是一个,返回的是一个零,对不对?返回的是一个零,也就是说监控啊,啊?监控这个, 呃,这个地方呢,其实就是一个死循环啊,此时这里其实是一个死循环啊,死循环返回的一个界面啊。嗯,这个表示 这个界面程序界面监听事件, 今天啊,这个上次,上次好像给大家记过了啊,记过了啊,那我们再记一笔啊,今天事件的开启啊,是一个死循环 啊,是因为是一个记起来了吗?死循环,这是一个死循环啊,一直不断的去监听我们事件的界面,对吧?我们来看一下啊,我们现在这个程序有吗?现在是什么都没有吧?应该,对吧?我们右肩来看一下啊, 哎,还是什么都没有?他就是一个进程在这里,对吧?他就是表示一个进程在这里啊,现在我们把这个观看掉啊,所以我们这个地方其实是什么都没有啊,就一个进程,对吧?也没啥用啊。那我们界面是不是要搞一个啊?界面我们来搞一个看一下。界面搞一个我们界面的话来自于我们 之前的那个这个东西,对吧?是不是来自于这里啊?四百、三百啊什么的,对吧?那么我们这里呢?呃,我们来把这个东西进行实力化啊,把它进行实力化,导入这个,导入这个什么 uiphone, 对不对啊?首先把这个界面的 把,这个应该是 test ljytest 零零三要倒进来这个模块啊,这个模块首先要倒进来啊,来,再来导入一个啊,再来导入一个 input 啊, ljy, ts 零零三,对吧? ts 零零三, ok, 这个地方我们就是导入模块啊,导入叫做导导入模块,对吧?导入这个这什么的模块呢?导入类 的,呃,生成界面的类的模块啊,生成界面的类的模块,对吧? ok, 那么我们导入这个类的模块之后有什么用啊?什么用呢?我们就是要现在开始是就可以调用了吗?对不对?调用这个模块啊,调用这个模块的什么呢?他的一个 uifo, 对不对?他的 ui, 哎,大小写是有区分的啊。 uifo, 我们这个类啊,我们将类进行实力化, 将类进行实力化缝,对不对?他是不是一个缝吗?我们就用缝好了啊,就一个缝。呃,实力化,我们这个类 实力化生成生,生成的界面的类啊,这是一个实力化生成的界面的类,那么我们将实力化生成的界面这个类的话呢?我们可以进行一定的配置, 或者是啊通过这个什么呢?通过这个,呃, set, set up ui, 对不对?通过这个地方我们传入这个一个,把这个类呢传入到某个界面上,那通过他传入到哪一个界面上呢?我们就要 搞一个界面出来,那搞一个界面是哪一个界面啊?就是一个通过 q 啊, q 位置词啊,就可以作为一个 啊,窗体的一个界面,对吧?窗体的一个界面,我们就直接来一个 qv 的啊,那大家其实记住这一个步骤啊,这其实就是一个程序生存的一个思想啊。 好,那么我们来这个前面是不是要补一个啊?他是不是没有啊?没有我们就要搞一个 q v j 词, ok, 那么我们就用 w 来表 w 来表示 v j 词好了啊,呃, ok, 然后呢是一个 q v j 词,对不对? q v j 词啊?好,我们就直接实力画一个界面 写一下实力化啊,实力化,实力化,界界面之类啊界面之类, 这也可以表示一个实力化的一个界面积累啊,啊,对吧?界面的一个积累位置成一个空间的积累,我们把它传入进来就传入到我们他就行了啊,好,传入到他之后呢?我们就是,呃,是不是通过他进行赛特阿普拉? 现在阿布之后啊,就是实际上就已经把我们的这个界面啊,就已经啊 ok 了啊,就已经 ok 了。然后呢就是不是装载到这里面去了? 我们看看啊, ctf 装载到哪里呢?是不是装载到这个啊? fom 啊?装载到这个 fom 这里去了啊?装载到我们实力化的这个 fom 里面去了啊? fom 点什么?什么?是不是?哎?装载进去之后我们是不是就可以将这个啊?他就显显示出来了?显示出来了, 我们来看一下啊,有没有东西啊?是不是如此啊?哎,是不是四百三百啊?但是呢他这个地方呃出来的时候呢,他默认情况下是给你生成的是 中间,是不是?这中间的是不是在中间的?哎?这个中间的这个位置啊,实际上是呃,就生成之后因为我们默认情况下没有配置的,所以默认情况下之前看到的是左上角的零零,对不对?左上角的零零,那所以 但是他在零零的时候呢?他在生成的时候他并没有零零,对不对?并没有零零,那么我们也可以,比如说在这个地方我们给他生成写一个零零啊 form 啊,比如说我们自己写一个零零,自己可以补嘛,对吧?凤点木啊,通过木 呃木啊填放点木的方式啊,比如说是木到零零的这个 位置啊。好,我们来自己再看一下右键绕,你看是不是跑到窗题左上角的零零啦,哎窗题左上角的零零啦,哎。这个地方呢,其实我们使用了一个木方法来 对他的位置啊进行调整啊,我们对他来这个地方木方法啊木方法来做一个补充啊木方法来补充木方法的话呢,我们其实 作用是什么呢?调整啊,调整这个窗体的位置啊调整窗体的位置啊。那么第一个参数表示这个水平方向 水平方向的位置啊,那么第二个参数表示垂直方向的垂直方向的位置啊。这动 是一个用餐用。用什么用像素来表示的啊?母母方法啊,我们刚刚举例,我们可以把这个例子拿过来,对吧?我们修改了我们生成过来的这个类啊,到零零的这个位置啊,因为我们默认我们零零那个位置啊,其实在生成的时候他就没有给你拿进去的啊,对不对? 哎,因为他认为是零零,他可能认为你就是跑到中心位置的啊,啊对吧?举例,使用举例, 使用举例, ok, 我们就是放点,放点什么木?好,那么我们通过这样一个解析啊,我们上一节课啊,默认情况下我们最早的时候我们是不是用的是这个没有温度啊, 而没有 window 的话,我们知道的啊,它继承的是这个啊, q v 九七,对不对?我们看到翻到最上面啊,翻到最上面之后,我们发现它是继 现在是 q 微酒厂,所以啊,我们就是此时我们自己在写的时候,我们其实也可以时间是简单一点,直接写这个,直接写这个叫做什么微酒的就行了,对吧?是不是啊,直接写这个微酒的这个类 啊,直接写这个 vigo 的这个这个鸡肋就可以了啊,对吧?这是一种最为简单的一种写法,那么大家呢,也可以去尝试一下,也可以不使不采用这个,呃, 不采用这个,这个夜府渔具的方式在这里可以用,当然最好的还是采用这个夜府啊,夜府渔具这个通过内来模拟我们这个函数的一个文件的入口,入口啊,这样会显得我们的这个代码会比较 有水平吧,哈哈,会比较的,呃,正规一点,对吧?那如果正规一点,那么我们可以把这上面还有加个 fme 啊, fme, 那么这样子也可以使得我们这个类啊,可以在多方面进行使用啊,也比如说可以导入到其他的类当中,把这样一个窗体呢单独去进行调用啊,单独去进行调用,那这个地方我简单的可以给大家来写一下啊,这地方是使用窗体,窗体显示 啊,显示函显示,所以我们这个秀呢,是其实是调用窗体显示函数,对吧?嗯,秀秀函数, p y q t 五的秀函数是窗体的显示功能啊,窗体的显示功能使得窗体显示出来啊,那么这个呢,实际上是它自动生成的,对吧?这其实就是一 个什么将啊将生成的生成,呃的这个,呃窗体控件及配置什么载入到,载入到这个 w, 也就说是威瑞特这个空间对象, 空间对象中,那么我们将这个空间对象载入进去之后呢,就相当于是这个配置进去,对吧?然后我们就可以显示出来了啊,最后我们就是监控我们这个窗体,窗体这个 app 的对象就可以了啊, 也就是监控我们的这个,呃,我们这个这个叫做什么?呃进程,对吧?监控我们的进程,然后监控监控进程的事件一旦发生什么啊,那我们就进行钓鱼就行了啊。好了,那么我们今天的话呢,主要是给大家呢做了一个非常详细的 一个对照啊,是什么的对照呢? pyqt 五的这个代码,以及对我们的这个啊, qt 点三个啊的一个设计,对吧?对照我们这个设计啊,做了一个详细的讲解,这个文件的一个详细的讲解,那么嗯,大家呢也 自己要好好的去体会一下啊,你自己比如说再加一个东西或者减一个东西,对吧?哎,自己可以去感感受一下这一个过程。好,那么我们最后来进行一次总进行一个总结啊,我们学到什么呢?呃,首先要掌握这个,呃, 拍死啊,对吧? qt 点三个 dsigne 啊,点 qt 点三个。 第三个设计界面与什么呢?与这个我们的 pyu ic 啊,转换后文件代码的对应关系啊,对应关系,这个是非常重要的啊。第二个我们就是要掌握 pyqt 五的啊, 五中基本啊界面的界面,界面中常用函数的基本用法啊用法。那么第三个我们就是要掌握这个什么呢?掌握这个,呃,应该来说是有一点非常重要啊,如何 如何?呃,调用调用生成界面的啊,思想,思想对吧?如何调用生成界面的?这个思想实际上就是应该是,呃, 则啊,实则是什么呢?是 pyqt 五,哎。实则是如何使用 pyqt 五 纯代码啊,纯代码写这个,呃, gui 界面的关键 对吧?就这几点啊。好了,那么本期的教程呢?就是这些啊,如果说你感觉我的教材对你有所帮助的话呢,欢迎继续订阅关注,为我点赞啊。 呃,我们在这个百度的贴吧当中有一个呃呃,贴吧的名称叫做边城创造城市啊,大家如果说呃有什么问题的话呢,欢迎在这个贴吧当中进行留言。好了,我们的啊教程就这些, 哎。刘军编程编程创造城市,欢迎小宝们继续关注我们,下期再见!拜拜!