粉丝2.7万获赞7.8万

来,我们接着上节课的内容往下看哈,上节课我们在执行程序的时候,你在 q t 当中输入中文,它是乱码的一个格式哈,怎么去修改?一般呢会在工具当中有一个选项 在选选项当中呢?文本编辑器,然后行为默认编码,把默认编码我们给它改成 u t f 杠八,给它改成 u t f 杠八,哈, 改一下,改完之后选择 ok, ok, 之后你再去编译执行,然后它的这个地方可以看一下哈,还是乱码的, 这样就需要再做一件事哈,因为你修改完成之后还得再重新新建一个工程,因为第一个工程他没有用到哈,改一个名字零二 杠 demo, 然后也是让它设置成默认的一个路径哈,下一步一直跟之前的内容都是一样的,也不要 u i。 下一步完成。完成以后, 完成以后,我们把刚才添加到 vg 他当中的这个代码号,我们给他拷贝到这个 vg 他当中,给他拷贝过来哈,拷贝过来以后,把他的一个大小我们稍微的改大一点吧。保存 之后,这你也可以去运行,运行一下,看他的标题有没有啊,有没有去切换,现在已经支持去中文了哈,已经支持中文了,那这是这样的一个解决方式, 时候我们在笔记当中也来写一下,确定使用哪些函数,我们怎么去确定?已经确定完成了哈,确定完成第三个知识点 我们又遇到了一些问题哈,第三项就是设属性,设置窗口属性,设置窗口属性我们用到了,已经用到了两个函数了哈, 用到了这样两个,然后还有其他的内容,其他的内容我们一会再往笔记当中去添加哈,这是这是这是这样的, 然后后边我加一个注意,嘛叫如果 q t 中文乱码,它的一个解决, 我写到这不加注意了,就是如果 qq 当中中文乱码,我们怎么去解决呢?是这样去解决的,我截一张图哈,工具当中有选项, 截一张这样的一张图,需要修改这个地方的内容,然后这个地方内容怎么修改过来的呢?我们先选中的是工具,工具当中他有一个选项 啊,从工具然后找到这个选项,从选项当中呢,我们去找文本编辑器,然后去找行为,然后再找这哈,这样的话他就可以解决中文乱码。来,我加到 咱们的笔记当中,中文乱码的话,在工具当中把它的编码格式改成 u t f 杠八, 改成 u t f 杠八哈。呃,还得要注意啊,你改完之后叫改完之后 原你原先的那个工程他还是不支持的哈,我们必须我们给他要要重新新建过工程哈,重新新建工程,然后乱码解决哈, 当你修改完成之后,你新的工程它是可以去解决这个乱码的哈,需要注意一下这是那个乱码怎么去解决的?我们就解决到这解决完了之后,然后这个 窗口大家可以看哈,这个窗口大小我们也调了吗?它是可以伸缩的,我们再去找一个函数,让它的这个窗口变成不可伸缩的哈,一样的一个方式哈,我们打开我们的 q t 助手, 还是找到 q v g, 它找到之后呢?还是来看这个函数,在这个函数当中它应该是一个固定的大小了,所以我们 再去找的时候,他肯定有一个 size 的一个标识,然后还应该是有一个固定固定呢,可能是 f 开头的,也可能是 fix 开头的哈,我们来找看一下他在哪哈, 来往下翻,翻翻,翻找 size, size, resize, 这,这没有了哈,刚才我们已经看了,这是 resize 的使用,然后往下 set, 看一下 set 有没有呢? set it 在这大家可以看哈,这有一个设置固定大小,还有设置固定的高度,设置固定的一个宽度啊,有非常多的这个函数哈,那我们用一下这个 size 函数, 它的名称是还是一样的一个方式叫找到,找到之后呢,就是 these 指向 赛特有一个 f 开头,你可以去设置它,把它的高度设置成不可拉伸,你也可以把它的宽度设置成不可拉伸。好,我把它的一个大小给它设置一下嘛。设置成,嗯,设置大点嘛。 我设置成,呃,五百五百的设置好了哈,给他设置好了。设置好之后,这个啊,我们先给他屏蔽一下,我们不去调用 用那个设置大小的函数了哈,我们设置固定大小,来一个方式重新去在这运行,我们在这去给他运行一下哈,运行完五百乘五百的已经完事了,然后我们来试一下他的这个伸缩,你看当我的鼠标放到这个位置的时候,他已经不提示我 完,可以让我去拉伸了哈,宽度肯定是不行,高度呢?也没有,高度也没有哈。这就是我们 第三章怎么去设置窗口属性。给大家举了 举个例子哈。给大家举了几个例子,就设置了一下大小,是来下窗口名称,那你也可以从我们的帮助手册当中再去找一些其他的属性函数来用一下,哈,就先说到这,第三章就先说到这。

好,同学们,那么今天的话呢,我们用,我们用这个 q t 啊来,在昨天的昨天就学了一个数据库 sockey, 对不对?今天我们就来在此基础上来实现 界面上的一个软件啊,来结合数据库实现真山改查啊,真山改查,那么我们今天来先新建一个这个,今天的啊,今天的文件夹,我们每天有一个,对吧?啊?我们今天的话呢,就会把这个所有的哎 点的太多了吗?啊啊,都会放在这里啊,那么没事,那么我们接下去的话还是一样打开它,那么同样的用一条语句来创建我们的数据库,或者说已经创建好了 啊,那么我们创建的这个数据库的话呢,实际上应该是就是说我们如果说是做嵌入式开发, 到时候呢你要是把除了你做的这个软件要考到你的这个,呃,就比如说一个平板上面,对不对?把它考进去之外呢,与此同时还要把你的数据库考进去, 要不然的话也就没也会没有用的啊,当然你如果说写在这个软件里面的话,他会自动创建,对不对?那也是一样的,也可以用的,那就是有两种方法,要么考进去,要么就是写在软件里面啊, 那么我们现在的话呢,还是一样先新建一下这个工程,今天我们来看看这样的一个项目该如何来实现啊?零八零五哎, 呃,零 test 零一吧啊,加个一吧,我们来给它创建一下,创建到这里 啊,作为我们的呀一个主界面,那么今天的话呢,我们要学习新的空间啊,新的空间, 新的空间,那之前的话基本上已经给大家用了一些哪一些的,就是一个是文本框对吧?一个是呃除了文本框之外的话呢?还有就是什么呃 label, 还有是按钮 button 对不对?那么这几个基本的 记法大家都要会记啊,记,哎,怎么记呢?哎,我们要记的是我们一般来说都是有个 q 的对不对?但是我们搜索的时候都是有个 q label 啊, q label 这个是我们简记回顾一下啊,还有是一个 q button 啊,那么还有就是呃 q line editor 对不对啊?是大概是这一些啊,大概这 那么我们基本上学会这些的话呢,我们可以实现很多很多的功能了,已经仅仅仅仅一个这个 level 就可以,是不是实现除了图片文字还有视频这些东西都可以实现啊啊,所以就功能其实就非常强大了啊,除了这些之外我们其他都还没用到了啊。 今天的话呢,我们来学习新的东西啊,叫做啊,叫做一个表啊,表格网格啊网格空间, 那么表格的网格控件的话,我们啊今天用到的叫做 table view 啊 table view, 那么除了这之外的话以后我们也会用到一些列表啊,列表空间,列表空间,我们觉得 list will you, 对吧?那么其实呢用法都是类似的,那么我呃让同学们在学习的过程当中啊,希望同学们能够看 到我的这些用法之后啊,你要能够学会举一反三啊,嗯,比如说我学会了这个 table view 对不对?那么 list of view 的用法其实都是类似的啊,你要能够知道我这个思路是怎么走下去的,对吧?你思路会走下去了,那才能够就是 自己能够拥有写程序的这个能力,对吧?而且就是关键是啊学习的这个能力啊,就是说你通过一个程序能够举一反三出来其他的一些能力。那么我们首先来啊实现一个叫做,呃,我们把这个东西啊来 名称命名一下啊,名称命名一下。 q 名称的改变,我们默认情况下是改在哪里哪里改的,大家看过吗?这个属性当中,我们比如说先把他这个项目编一启动一下,默认情况下的话,他是跟我们的这个呃创建的这个 项目的类名是一样的,对吧?那么改这个是从哪个地方改的呢?大家看过吗?属性里面有没有改过?属性里面有没有改过?刚刚的那个名字 要跟上,对吧?这个地方叫做什么呢? window title, 对吧?通过这个属性来修改啊,这个叫做,比如说我们把它改成,呃 呃,这个叫做什么呢?用户管理,软用户信息管理, 对吧?用户信息管理,比如说是,然后再加上你的作者啊,鎏金编程。好,假设是这样的,那么我们通过这个属性我们应该要知道,嗯,但答不出来的,这个时候你就要把它记下来啊。 window title 对不对?有两种方法,一种方法就是从这个属性上面可以去改,另外一种 就是通过什么代码,代码可以去讲修改,对吧?那么修改窗体呢?但没答出来,我们给他记一下啊,修改窗体的标题啊的属性是什么呢? window title, t l e 啊, window title 啊,这个属性窗体的属性 window title。 好,接下去我们来呃制作一下这个界面啊。首先我们来做一个叫做,呃, la label label label 里面我们要拖一个用户名密码,对吧?我们来做一个注册和管理啊, 先做一个注册,注册的话呢,我们注册到数据库里面去,注册到数据库里面去之后呢,我们要从数据库里面的这一条信息,然后能够学会修改啊,同样的也要能够学会删除,对吧?那么这就是 同样还要能够把它展示出来,对吧?那么这就是一个最为基本的真商改查的一个结合数据库的一个简单的用户信息管理,那么如果说你学会了这个用户信息管理之后,结果会怎么样? 下次我比如说让你管图书,图书信息管理会不会啊?成绩,成绩管理会不会?是不是都是类似的啊?所以就是我们要掌握一个,要学会其他的啊,你这个这个东西就是比较核心了,你就相当于是一个你的人生的一个呃,管理信息系统的一个 demo, 对吧?这是累死了啊。那么我们来看一下这个,比如说是账号啊,账号,那么接下去呢?再来一个密码啊, line edit 啊,我们这个就一行就够了,对吧?哎,那么这个跟大家顺便讲一下,刚刚这个东西是不是可以可以动的? 是不是可以动的?可以动的这个东西可以拖的在旁边可以动的,拖的这个东西叫做 dog 啊, d o c k dock 啊,这个词大家也要记住啊,比如说 sat dog, 咱们设置的是哪一个? left dog, right dog 啊? bottom dog, 对吧?哎?上左左,左边,右边,下边,对吧?中间的叫做叫做什么? center 啊?我们用到那个 window vigit 的时候,我们刚刚不是,是不是用默认的一个 video 它,呃,我们用 window vigit 的那个时候, men window, 就是那个 men window, 记得吗?用那个 men window 的话呢,我们此时就可以会看到我们刚刚我所说的这几个啊,顺便跟大家提一下啊,那么我们现在 edit 啊, line edit, 把它拖拖好,把这个界面拖拖好, 这个是你的账号,好,接下去复制,还记得吗?怎么复制?哎,哎,这个拉拉拉,对,然后 ctrl 按住鼠标一拖是不是就来了,哎,这个叫做密码 好,密码好,那么旁边的话呢?我们就给他加一个注册啊,注册我们就用按钮啊,注册 注册,哎,哈哈哈,白痴了已经哈,那么这个地方,我们就比如说加个注册,旁边我们加那个注册 注册用户,对吧?注册用户啊,那么注册用户我们要把它注册到数据库里去啊,数据库里去, ok, 那么我们,呃来 注册的过程当中,我们要同样的,待会要用两种方式注册进去之后我们要从数据库里面去看一下他是否注册成功,对吧? 哎,我们来看一下啊,首先点击 click 啊,点击 click, 好,那么我们注册的时候注册到数据库里面去的话,我们首先是不是要加载这个跟数据库有关的东西啊?对吧?那么我们,呃,还没加载之前,我们先把这个 这个上面的一些文本我们给它取取下来。用户名和密码,对吧?取,取下来是不可以啊?那我们取取下来,这是一个字符串,字符串的话,我们要用一个内裤叫做 q string, 对吧? qs, 俊,好,那么与此同时我们要用到数据库的,我们必须要做到第一步是什么?哎,工程文件引入,哎, 数据库的是有关的,大的内裤,对吧?然后呢里面的一些啊,一些类我们就可以用了,这个类就可以把它引入了,那么我们今天的话呢,要用到的是这个 q soccer 啊, database, 这个就是要创建数据库的,待会啊,啊,那么我们是不是执行语句的话,还有一个叫做什么? 完了, cue soccer query, 对不对?哎,那么这里面的话呢,大家待会要注意到啊,我们要结合数据库的话,有个模型在这里面啊,待会我们要用到, 在这个地方,我们首先要知道,如果说想要多条使用这个搜狗快手,我们是不是可以在这里面用一个指针啊?然后呢,待会再出手完,完成数据库之后,我们再把它进行扭一下就可以了,是吧? 好,首先我们来建立一个指针啊, q circle query 啊,我们比如说建立一个这个指针,对吧?指针没有关系,但是你不用指针的话,就意味着待会它其实是取不到那个连接的, 对吧?对吧?好,那么我们此时的话呢,这一个 ok 了,我们接下去要创建跟数据库有关的东西啊,数据库有关的,那么我们在这里面的话就先创建数据库 s s q q circle database, 对吧?啊,那么我们这个 d b 吧, 等于就这样好了,可不可以啊?这个就是一个局部变量,对吧? db 点点什么呢? add database, 是不是啊? add database, add the data database, 什么东西 哎? edit base 数据库的 类型,记得吗?啊?回忆一下啊, q circulate s q l i t, 对吧?这个这一条要背出来的啊,虽然背,如果说你背不出来,帮助文档里面是有的,但是你要把它背出来,对吧?那么默认使用这个 qsaclad 的时候,我们就是给他使用的是 哪个版本?三这个版本,如果说后面加个二就是二这个版本,对吧?好,那么我们接下去啊,那么我们呃 db 点 add, 呃,设置了,对吧?设置了,那么我们接下去的话就可以怎么样创建数据库了,对吧?创建数据库了 db, 点 set database name, 创建数据库文件了,数据库的驱动,我们 ok 了之后就可以创建数据库的文件了,对吧?数据库的文件,我们比如说是叫,呃,刘金玉啊,编程吧,今天就用这个啊,刘金玉编程,那么 这样子的话就已经创建完数据库了,是吧?啊?点 d b, 有或其实有或者没有都可以啊,如果说按照按照我们这数据库的一个规范的话呢,就点 d b, 对吧?那我们就加进去点 d b 好了,好吧啊,接下去我们 数据库的这个文件已经有了,那么我们是不是要使用它的话,是不是要打开链接啊? db 点啊 open 好,打开链接,这就已经打开了,那么接下去我们还要干什么呢? 想要用查询的话,就要把这个查询要怎么样? new 一下吧, new q circle 跟着啊,跟上啊, circle query ok 啦, 这样子的话我们查询语句也可以用了,对吧?那么我们在这里面的话,我们先来创建一张表格,需要啊,创建创建一张用户信息表,叫用户名和密码,跟昨天一样。好了啊,点 e x e c 吧。好,我们直接来创建一下啊。 create, 来背一下 c r e a t e create table t a b l e 什么呢? user info 对吧?哎哎,我们在这里面,哎,对, user name password 啊,用户名密码,这样是不是就可以了创建了表了?好,我们来 试一下,看看是否首先要一步一步来,不然的话错的太多了,有可能错掉的话会太多了,对吧?我们来现在来,呃,找到我们的,呃,加载的这个八零五一我们的这个工程文件,下面看看这个数据库创建是否正常啊? ctrl 加 r 运行对不对?这是个快捷键啊,要记住,我们现在来运行编译一波看一下。好,这里面界面已经有了,那我们接下去的话呢?哎,这个地方有吗? 没有的话我们要检查一下差在哪一步,对吧?照道理的话,我们,呃数据库创建完成之后,肯定是这个地方应该是有这个相应的数据库文件了啊。首先我们这个 circle database 对不对?然后呢是 add database 对不对?其实不,其实如果说你怕忘记的话,你直接这个地方帮助文档去看一遍,去核对一下好了。 q circle that base 去核对一下,他肯定有创建数据库的地方的嘛, 对吧? add that base 对吧?然后呢是 soco 快了就就直接就用了啊,就用了, 那么 circulate 用的对不对? q s q l i t e q s q l 是不是大小写错了? s q l i t 啊?大写大小写也对的,大小写也对的,对吧?大小写也对的。 创建文件,那么我们先把这两行代码给注视掉啊,就怕太多了,他说数据库没有被打开啊,在这里面也就说默认创建数据库,使用数据库创建其实是有问题的,对吧?那么我们,呃要把这个数据库首先要能够搞出来才可以啊,现在没有 还是没有?那么这个地方问题我们可能要发生的地方在哪里,对吧?我们要,我,哎, 要怎么样?我们和昨天的话,我们使用的是这个的,是使用一个指指针的,对吧?指针类型来创建的,那么我们其实应该是一样的啊,对吧?啊?但是为什么呢?我们要么先给他改成我们熟悉的一个写法,我们来试一下,可以看看 database 啊,是是这样写的吧?啊,那么 d b 点等于六 q circle 啊, database 啊,我们这里面是不是直接扭一下就好了? 这个也不需要,不需要怎么写啊?不需要怎么写? q circle database, 那么接下去的话呢?就好了,对吧?这个地方,呃,全部要改掉了, 这里就全部要改掉了啊,我们再来看一下,重新运行一下看看, 哎,这个会有区别吗?到底啊,这也是要尝试一下,对吧?尝试一下, 其实是其实是不是一样的啊?我们来看看,再核对一下。这个其实是比较关键的部分啊,但是到底是错在哪里呢?跟昨天是差在哪里呢? 我们可以把这一条复制一下啊。呃, so call the base, 我们其实从这里去参考一下它的东西就可以了,对吧?它里面是怎么去写的?比如说 啊,比如说这个他用了一个什么静态静态的写法, 是不是他是在他的静态的这个里面的这个东西啊,那么我们也还是一样采用这个啊,采用这个静态的静态返回的这种形式啊,对吧?我们昨天是不是采用静态返回的形式来写的? 哎,所以我们今天还是要一样,我们如果说发现问题的时候啊那么我们就要通过这种形式来帮助文档去看,那当然大家要熟练对不对? 你如果说想要呃做的非常专业的话,那你就要非常的熟练,比如说你以后在练习要去比赛或怎么样,那就要非常的熟练,每天都要去练啊, soco database 对吧?哎好, add database 啊,好,我们再把它粘贴进来, 我们再来看一下啊,他这个这个现在是静态返回的形式了对吧?哎为什么会报错?因为他返回的是一个什么类型你要知道啊返回的是一个什么 soco database 的一个类型, 对啊,那么这个地方就啊我看一下对吧对吧?啊那他因为返回的这个 类型就根本不是一个指针的类型,对吧?哎好,我们再来看一下啊,再来重新来测试一下看看。 所以说我们有一些东西啊,我们在第二次在写的时候我们会发现有一些细节上面你是平时没有注意到,对吧?下次再写的时候你可能就不知道现在是不是就有了, 对不对?所以呢我们这个地方虽然我们上次记了这个方法啊,但是你要非常的清楚的记住这个地方是你刚刚看了半天是不是没看出来,我们只有看了帮助文档之后才知道了啊,当然我们呃首先这里要记一下啊,如果 实在哎写的时候找不到问题啊,找不到问题啊啊要学会使用帮助文档啊,文档参考对吧?这个帮助文档它里面非常的 ok 的啊,那么这里面的话呢?哎撤销,那么在这里面的话呢,我们就是如果要实现实现数据库啊,数据库的初始,数据库对向的初始化, 说实话啊,要使用静态方法啊,静态方法啊返回要使用这个的这个内裤的一个静态方法来返回啊,这个要注意。 好的,那么这样的话呢,我们数据库已经创建成功了,接下去就是一样啊,接下去就是来执行了,对吧?来执行了创建表啊创建表,我们来看一下, ctrl 加 r 来看一下,这样的话呢,应该是表也已经创建好了,创建完成之后我们是不是要通过这个语句来进行检查了,这表是否存在啊?好,那么我们要到达这一个目标, 这个目标是在这个位置是吧?把它路径复制一下,找到我们的 circulate 的一个安装位置啊,安装位置 再吸一盘,如果说你怕麻烦的话怎么办?哎,把,那当然也可以啊,把它加到环境变量,马上就可以去使用它了,对吧?哎,好, 那么我们现在的话呢,来检查一下啊, circle it 啊, circle it 三哦,到达这个路径我们是 l j y 编程点 d b 对吧?啊?回车 点 table 是吧?看里面的是不是有 user infor, 好,那么我们有没有数据呢?肯定是没有的,对吧?好,小黑板啊,这里面我们要注意啊,接下去我们我要体会到一个问题,就是这个地方 我们如果说第二次在运行的时候,第二次在运行这条创建语句的时候,他会不会把之前的内容给覆盖掉, 哎,嗯,这个不会不会啊,哎,不会不会哎,所以你要马上回答的应该就是如果他原来的表或者数据库文件存在的情况下,他是采用打开的形式,对不对?对,哎,如果说不存在的情况下采用创建的形式, 好,那么接下去我们数据库已经有了,表也已经有了,是不是可以把我们的注册的东西,哎, ins 的进去了啊,那么我们接下去来,呃,写一下 q string q string 啊,那么这个 q string 我们首先是一个 username, 对不对? username 啊, username 是页面界面上面的啊,点点什么? line editor, 第一个对吧?点 text okay, 这是用户名,然后呢就是 q q string, 然后是 password 啊,等于 u i 点 line edit 下滑线二点 test 啊,当然你可以待会你说直接用也可以,对吧?嗯,最最好呢,你要把它取下来,这里插在哪里啊? 指针类型对吧?啊,接下去我们要写一条 soccer 语句吧啊,那么写一个 q, 呃, qs 俊, soccer 变量好了,好吧,哎, soccer 变量,我们来把这个语句写好, insert 吧, insert into a user info okay user name n a m e password 好,那么 values 啊, value 什么呢?第一个, 我们这两个都用给他字符串好了啊。字符串,第一个字符串 user name 对不对?字符串第一个字符串是不是已经写好了?写好了,我们现在是怎么样给他拼接哎?加双引号 对不对?然后呢,加加是不是这样哎,把一一个字符串整个给它拼接起来啊? use the name。 好,接下去来再拼接第二个, 第二个先是里面是有单引号的对不对?对哎,然后呢,再用双引号把字符串给他拼接出来 是吧?嗯,哎,那么我们 ok password p a s s w r d 好了吧,那这里面极为容易错啊,那么大家要看到我写的顺序是什么?先写单引号,再写双引号,再写佳佳,是吧?这个写的顺序是非常重要的,要不然的话你非常容易错,那么好了之后我们是不是把这条搜口去执行一下就可以了?怎么执行啊? kiri 之前有的这个指针,我们来 exec 搜口是不是就可以了啊?全录就可以了。好,我们来好了之后我们是不是给一个提示啊?注册成功了吗?啊啊,注册成功提示,现在后面的东西就越来越综合性了,对吧? 都都用到了,发现前面我们学过的知识点都用到了啊。 q message box, ok, 那么用一下静态的东西啊, q message box, 也就是说后面前面的东西没有学好,我们后面的这个作业会越来越难,东西会越来越多,对吧?都会逐渐都要用到,所以你每一期啊都要能够给他掌握牢了,掌握住了自己要能够学会写啊。 a about 好不好,我们来看一下,首先是不是这个对话框是在这里啊?哎,那么当前这个窗体啊,然后呢?我们要写的是,比如说是消息, ok, 呃,这个就是这个文文本注册成功,提示一下 注册成功, ok, 我们来看一下是否可以注册成功啊,是否可以注册成, 你要听好啊,听着听着,如果说你感觉现在听不太懂啊,听着听着其实就会懂,每次都是这样的设置密码,待会怎么设置? 有一个关键词,这只密码把它改成密码看不见了,哎,是吧?一啊, ecso mod 对吧?啊,那么我们这里面就把它给他看得见,好吧,我们因为要注册啊,注册一下,注册成功,我们来用数据库,是不是来查看一下, 哎,谁来个成英否?哎,是不是有了一个啊?我们再来看第二个好了啊?第二个,比如说 bbb 啊,二三四再注册一个,我们再来看一下 是不是有啦? b b b, ok, 那么我们接下去的话呢,要把这一个数据库里面的内容给它显示出来,通过什么显示?通过 q table view 来显示啊?啊? q table view 空间显示数据库中的内容为为表格,表格行啊,为表格行, q table view 啊, q table view。 那么我们要使用这个空间的话,首先我们是不是要把它拖到指定的位置啊?就像我们 v b 一样,对吧?要拖出来啊,拖出来, 那么当然你也可以采用 new 的形式给它把它 q new 出来,也是一样的啊,两种形式啊,两种方法,那么这里面搜索一下 table t a b r e table, 好,然后呢把它拖过来,拖过来,那这就有有,那这这个地方就是你的这个叫做什么显示的位置,对吧?那么默认情况是怎么样的?我们拖完以后我们来看一下啊,拖完以后 我们来把它浏览一下,其实就是一个空白,他肯定是什么都没有,那么接下去我们就是要把这个东西里面的东西是不是要给他宰出来, 怎么载出来呢?他要有个媒介啊,要有个媒介,把查询到的内容呢?要把它放到这一个的某一个媒介当中,通过这个媒介,然后呢啊,他会通过这个媒介来渲染出来表格里面的内容,那么这个媒介是什么啊?我要告诉大家的是是什么呢? 是什么呢?我们这个媒介我们在开始的时候就要给他设置好啊,要设置好我们来看看他缺什么啊,我们就给他什么就可以了,对吧?那以这种方式啊,我们来看一下他可以设置什么?我们现在是不是 ui 这里面有个 table view 刚拖进来的,那么他的这个,呃,我们这个地方写在哪里?大家看到我们是不是开始的时候要把这个数据要初始化,就是要给他列出来,如果数据会 有数据的话把它列出来,那么要列出来的话,我们,呃我们首先开始的时候就要把这个媒介要通过什么媒介要列出来,对不对?那么这个媒介叫什么?叫做设置要设置他的一些数据吗?对不对?设置他的数据通过什么呢?通过这个 set model 啊, set model 这个相当于是模型,相当于数据模型嘛, 对不对? model 就是一个模型的意思啊,那么设置一个数据模型,那么它这个数据模型是什么呢?什么一个类型呢? q, abstract item model 信号,它是个指针,对吧? model 一个类型,对吧?那么是相当于是它的媒介是这样的一个东西啊,那么 是这样的一个东西,我们在数据库当中该怎么去用呢?其实啊,大家之前的时候没有很好的去,可能有的同学观察到了啊,可能没有,我们来看一下其实要 用到的是什么呢?跟数据库查询有关的,我们其实就直接有一个他的一个数据模型会自动给我们生成 啊,这个叫做什么呢? q, circle query 下面有什么 model? 这个 model 跟那个 model 是同一个老字生的啊,就拥有同一个功能哎,所以我们可以来看一下它里面继承的是什么呢?啊?他一级一级。 呃,这个直接是显示他的内裤了啊,我们在使用的时候可以看到啊啊?这个地方现在还看不到,对吧?那么他的脑子呢?就是刚刚所看到的那个啊?看刚刚所看到那个,那么我们要使用他的话呢?我们我们是我们这个地方首先要把它载进来,对吧?把它 打进来我们来看一下 q sec model, 也就是说这个 q sec model 我们在这里面要用,那么在后面我们其实比如说我们插入一行数据的时候我们还是要把它查询一下,把这个数据模型重新再添加进去,是不是还要用啊? 那么它既然在不同的函数当中都要用的话,我们要把它做成一个什么变量呢? 不同的方法当中都要用的话,我们就要把它做成一个全局变量啊,马上要反应过来在不同的方法函数方法当中去使用的话,我们就要把它做成一个全局变量,这个叫做 q u e r y 啊 model, 对吧?啊?你不要奇怪啊哈,你相信自己打出来就行了啊, 啊哈哈,好,那么我们把它做成一个指针的类型,后面的话把它 new 一下就好了,对吧? 好了还是一样在这个位置啊,在这个位置我们数据库的表也有了 q model, 我们把这个 q model 把它初始化一下,等于 new q circle。 呃? circle query model? 这比较长啊啊?比较长。 ok, 那么我们此时已经有这个 model 了吧?我们是不是可以把这个 model 就可以设置进去了?放进去了 是不是可以把它放进去了?同样是 model, 对吧?同一个老字的吗?对不对?是不是可以放进去了?哎,我们在这里面可以,他现在已经 定位到了啊,是不是?这是不是就这个 q app stricter, 它是 item model 对吧?在继承过去是不是就 item mode 啦?同一个脑子吧,是不是我们可以看到它的一个继承的过程啊?继承的过程,那么我们在这个地方已经 ok 了,那么就意味着我们把这个模型的数据模型 相当于我们是会通过这个数据模型来渲染这个表格,对不对?那么这个数据模型现在里面有东西吗? 没有,我们没有查询过,对不对?那么我们将这个数据模型设置一下查询就行了啊,点什么呢? set query 就设置查询吗?啊? set query 就是啥子设置查询吗? select 语句来了, selecting from 啊, user info。 好啦 啊,数据就来了,我们来看一下,马上数据就来了,很快的啊。 set query 就是 设置查询,对不对?这是什么查询呢?我们来看看是不是又来了 aabbb 啊,但是我们这个这个东西好像表头有点不是很喜欢,我们要给他改一改。 表头要给它改成这个用户名和密码,对不对?要给它中文改成啊,当然有两种方法,一种啊,一种方法在这个地方数据库查询的时候,你就可以把它 add 成中文。 第一种,大家咋可能我发现没有反应啊? as 什么呢? as 用户名就这样吧,用户名我们来看一下啊 啊, ok 啊,第二个字段他说的啊 as, 呃,密码啊,我们看看,不知道要加要不加,不加那个单一号我有点忘记了,不行的话就加单一, 我们来看看是否可以过来,过来了吧,用户没密码了吧,是不是?这是一种方法啊,这是一种方法啊,这是一种方法。那么 这个我们首先来这个地方来记录一下啊,通过什么来来将 table view 的数据渲染出来,对吧?我们这里面 table view 记录一下啊, q table view, q table view 空键,通过 q set q circle model, 对不对? q circle model 啊,来渲染渲染数据,渲染数据来渲染数据,那么通过什么来设置呢?就是通过通过这个 set model 的形式,形式加入什么呢? q circle model, 对讲模型 对象啊的形式就可以了,那么接下去我们只要呃呃,通过下一步。什么呢?下一步,这第一步对吧?渲染数据的第一步啊,设置要设置啊,那么我们接下去要干什么呢?要通过这个 q circle model, 通过 q circle model 来从数据库中查询 出相应相,查询出需要的数据,查询出需要的数据就可以了,那么这样子就可以直接渲染了啊。那么第三个我们如果要修改这个 什么呢?表头,表头,对吧?显示的表头表头,那么有两种方法啊,第一种表头方法啊,法一, 法一是什么呢?就是通过哎,数据库查询查询自断取别名的方式, 这个就是取别名,刚刚就是用用户名密码这个地方,我就是取了个别名 as, 对不对啊?使用 as, as 关键词,接下来啊, 关键词是用 x 关键词来去别名,那么方法方式我们就这个地方来来举举例一下啊,这个例子就是这个啊,例子就是这个啊,接下去第二种方式啊,法二, 我们不需要通过数据库,就直接通过这个什么呢? qc 和 model 的方法 啊,设置表头的方法啊,来实现。那么怎么来实现?我们来看一下啊,如果说你这里面太多了,我们可以通过单独的来实现掉,这个地方还是心好了,这个地方心的话,我们就是默认是数据库的字段名称,大家可以看到 再来看一遍啊,是不是数据库的自带名称,对吧?那么我们现在来给他通过这种呃表头的设置的形式来实现,那么如何来设置呢? q, model m, o, d, e, l 点 set 什么呢? head 设置表头, set head data 啊, set head data 表头当中的第一列啊,第一列零嘛,对吧?第一列那方向我们是横向的表头啊,我们可以设置横向,也可以设置纵向,横向啊 哈 q t 好瑞,横向我们是 h 开头啊,我这个里面是不是跟大家讲过 v b 当中给大家讲过设置横向的时候,横向的属性叫做 ho horizontal 啊, h 开头为什么记住这个 h 呢?是因为 h 的 中间有个一杠,横向的就比较好记啊,那这样的话,你就认为这个东西是个横向,当然他的英文的, 英文的意思其实就是横向的水平的,对吧?但是你有可能会容易忘记到底是横向的这个哎, horizontal 还是一个 vertical, 因为还有一个是纵向,纵向是叫做 particle, 对吧?到底是哪一个?你可能有时候会记错啊,那么就采用这种形式就可以了,接下去取别名用户名 好了。这是一个啊,我们现在取了一个,对吧?我们来看一看第一个有没有啊?第一个有的话第二个也就 ok 了嘛,对吧?啊?接下去看看渲染出来是不是用户没有了。 poss 我都没有啊,那么同样的把这个 复制一下就可以了啊,复制一下要改什么?一第二列对吧?第二列就是缩影,缩影为一啊,缩影为一,这个叫做密码, 密码啊, ctrl 加,我们再来看一下效果如何。 s 语句简单是吧,那你也可以用 f 啊,到你看看使用哪种方式, ok, 就使用这种方式啊,那么现在就有了,对吧?那么呃,这是第二种 方式,通过通过这个的这种方法,哎,第二种方法啊,第二种方法 通过设置啊,通过模型来设置表头字段啊的别名别名,那采用这种形式啊,这种形式 set a head dot set head data 啊, set head data 方法, 使用 head that set head data 方法。好,两种方式已经 ok 了,那么接下去我们是不是要将这个表格,我们要相当于我,比如说我要修改某个用户 啊?对啊,我想修改某个用户,或者我或者说我现在不是有个创建吗?我创建完,我现在看看,大家看看啊,我现在创建在 创建再注册一个,注册一个之后他会不会有呢? a a abb 有了 ccc 吧。 ccc 啊, ccc 我我啊,注册哎,没刷过来 没刷过来,为什么没刷过来哎?他因为我们没有把这个命令给他执行吗?对不对?那么我们执行一下哪一条就可以了呢? 重新再查询一次,是不是?哎,现在按钮里面这个地方,这个地方我现在不是注册吗?注册完成了对不对? 提示成功了啊,那我们注册既然执行完成了,我们就把它重新再查询一次提醒注册成功就可以了,对吧?或者是写到后面应该也是可以的啊,我们来再看一下这个时候是否能够被实时的加进去呢? dd 再来一个啊。呃呃,这里密码就随便来了啊,注册是不是就来了?马上就来了,注册成功好,那么一一也是一样的吧,我不举例了啊,不举例了,那么接下去我们关键这个之外的话呢,我们肯定还想要修改,对不对? 如何修改也是很关键的啊,如何修改也是很关键,那么我们来如何修改里面的东西呢?我们昨天呃有给大家讲到一个用从数据库的角度又用什么什么语句啊 update 的语句就可以了,是不是我们修改的话肯定是不是彻底修改也要从数据库去修改哎,因此我们就采用 update 语句结合的形式来修改,那么我们想要修改它的话,我们首先必须要,必须要怎么样呢?是不是要获 过去我要修改哪一个?那么我们要不就先这样,比如说我选中这一行,我就让这一行的数据我让他显显示到这个位置啊,假设我让他显示到这个位置好了之后呢,我就点击一下更新的话呢,就直接更新过来了, 这是是不是也很方便啊?啊,那么我们现在啊,现在我们来,比如说我们现在点中哪一行就让哪一行的数据显示到上面好不好?对应的用户名显示在账号位置啊。然后呢?呃这个地方我们也用同样的账号好了啊,同样的账号好了,这个叫做账号好了, 同一个意思,对吧?账号显示在账号的位置,密码显示在密码的位置,然后我们就可以修改好之后呢,我们点击一个更新,那么我们就相当于都更新了,对吧?那这个方式是什么呢?我们想要在这上面 修改对应的这一行,我们是不是要在这上面要,我现在在做一件什么事情啊?听到了什么声音啊?啊?点嘛?对不对?点嘛?就是这就是什么是什么东西啊?克力克什么事件啊?点击事件,点击事件,在这里面我们叫做什么 信号? qt 里面不叫,是这个,这个,这,我们叫我们叫的信号,点击的信号对不对?点击的信号是不是就可以了?好,那么我们就在这上面呢来设置一个点击的信号,是不是啊?右键啊, 右键转到槽,我们选择一下信号, click 信号,对吧?点击的信号好了,那么我们现在呢? ok, 在这里面是不就有了?我们发现这里面有一个什么东西啊?哎,他给 给了我们一个参数,这个参数是什么呢?哎,这个参数其实就是代表当前我们点选的是哪个啊?点选的是哪一行,可以说是哪一行? model index 是指这一行的数据模型 啊,这一行的数据模型,那么我们其实只需要呃获取当前这一行,然后呢?这或者然后直接从这个数据模型当中去取,是不是就可以了?哎,那么我们来看一下我们如何来取呢?首先我们是不是要给他拿到一个 usernam password 里面啊?我们还是一样,为了清晰一点啊,我们就用一个 q string user name 啊,我们让这个 user name 等于什么呢?就等于这个 index 里面,对吧?我们从哪里拿呢?就从这个地方,我们这里面发现有一个叫做什么呢?这个是不是代表一行数据啊? model 一行数据的模型,那么如果 说你想要一个一个拿过来,是不是这一行里面的哪一列,对不对?你要涉及行,涉及到这一行里面哪一列的话呢?他其实你当前点的时候肯定点了这一行吗?对吧?点了这一行,那么你就获取当前的这一行 里面的某一列就行了,那么就用这个 sigh and so sibling 啊,这个有点像,就相当于是这个里面的哪一列啊? at at 什么呢? colume 对吧?这里面的哪一列哪一列呢?比如说我们用户名在第几列? 第零列吗?是不是密码在第几列?第一列是吧?那么我们现在 列就 ok 了。那么这个的话呢?返回过来的东西啊,他还还不是我们要的一个 spa 类型,我们大家要转一下啊,转一下,转成什么呢啊?获取这个只是一个模型还是个模型?那么我们要 用 day 的方法来获取里面的数据啊,获取完数据之后呢,他还并不是一个 string 类型,我们要把它通过 two string 类型来进行转换啊,那么最终我们就可以通过这条语句就可以 获取到我们的 username 啊, username 了,那么我们可以通过简单的测试来看一下啊。简单测试来看一下我们通过什么东西啊?啊? qd bug 对吧? qd bug, 我们来要引入一下吧, include 啊, qd bug a q debug 引入一下。好,我们接下去的话呢,用 q debug 来浏览出来啊,浏览出来 use the name, 我们看看是否能够获取得到,对吧?是否能够获取得到? 好,现在浏览,我们来看一下, 接下去啊,见证一下奇迹啊,看一下现在我点这一行这一行的账号,点这一行这一行的账号 c c c 了,点这一行这一行的账号 d d d 了, 是不是啊?哎,那说明能用了,那么我们密码是不是也是一样的?哎,那么也就是说我们这个时候我们就可以把这个用户名放到哪里了?哎, ui 点 ui 点什么? line, edit, the set, text 啊,用户名来了啊,密码是不是也同样的道理啊?哎,复制一下, 哎,复制一下这个就 password 好了。 psswid 啊,这个改成一是不是就可以了?哎,这个的话就是 password, 然后这个的话就是一个下黄线啊,是吧?他的名名称是不是下黄线啊?啊?这就已经很 快了啊,那么接下去来看一下是否能够实时的能够点击之后出现在上方,应该来说是可以的,因为刚刚我们进行了一个测试了,对吧?那比如点击这一行叫 aaa, 一二三, 对吧?这就来了,我点哪一行是不是就哪一个?哎,这,这就,这个就是我们相当于是我们这个信息我们接下去就可以改,通过他呢,就能够获取过来,并且能够修改了,对吧?那既然信息能够获取的到,我们是不是可以修改啊? 啊?比如说我们现在来修改对应的这一行的这个数据啊,那么我们就加一个按钮,这个按钮 button, 这个按钮,接下去是不是就简单了,是不一条语句就可以了啊?这个比如说是更新, 更新用户,对吧?呃,比如说更新用户, ok, 那么更新用户怎么个 更新法?我们首先要获取这里面的,对吧?获取这里面的,好,我们来右键转到槽,点击一下啊,点击一下,那么我们更新的话呢,首先要获取这个里面的用户名和密码,同样的,我们采用上面这个地方获取用户名和密码,我们上面是不是哪个地方写过啊?这里啊, 哎,我们把它拿过来复制一下,这用户名和密码就已经有了,有了以后我们接下去就拼接一下语句,是不是就可以了?哎,我们来 q circle, q string, 哎, string circle 等于更新语句,来回顾一下, update, update 什么 表? user info, 接下去字段, set, set 啊,用户名 user name 等于, 是不是要单引号,它是一个,它是一个什么类型?是那个字符串,哎, work char 类型,字符串,对吧? char 类型啊,那么我们这个地方是不是 use the name 拿过来,那么我们,呃,就用户名也也可以改,密码也可以改,那或者说你想改一个就改一个就好了,对吧?那么假设我们这里面只改密码好了,好吧?密码,呃,用户名我们比如说就不改了,就改一个好了,当然你想两个改就写两个,对吧?啊,比如说我们这个地方叫帕梭的,改这个啊,改这个帕梭的 password, 我们什么呢?拼接一下是吧?拼接一下,那么这就是拿过来的 password, 通过什么来定位 where 语句来定位 user name n a m e 等于什么?就是我们刚刚 获取过来的这个 username 吧。啊,获取过来的这个 username 啊,放家家里面啊,这就 ok 了,但是此时表里面会不会刷新过来?还不会,因此我们还要 select 一下吧, 对不对?这条语句执行一下是不是就可以了?哎如果说你想简单一点怎么办?把这条语句放到哪里 就放到一个自定义的方法里面,直接执行这个方法调用一下是不是就可以了,对不对?就不需要重复了吗?哎,那你修改的时候是也就那我这里面我给大家演示的时候就就直接简单一点复制一下了啊啊,那么 你写的时候不要这样写了,好吧啊你写的时候要更加的要严格一点啊,可以写的更好一点,然后把自己的代码要写的更好一点啊啊假设 我们现在看看把这个 c c c 的五五五改成改成再加个一一吧后面,好吧更新用户,哎,哦,没有那个 s q l 没值。哎。怎么样了?我们来看一看发生了什么问题。 发生了什么问题?哎,是不是没有没有更新啊,根本只是一个字不串而已啊。那么我们要执行的话是不是要用到这个 carry 啊 啊之前的那个 sococover 啊,点 e x e c 执行一下就 ok 了。好,那么我们再来看一下效果如何,效果应该很赞的啊。 好,我们来看还是一样五五这个地方加个一一更新是不是就来了,那速度相当的快啊,这边变一下三三三,是不是一样的 给他改成这个一二三,你看速度相当快啊。好,那么这就是我们实现了一个更新了哎,那么我们删除会不会删除是不是也会啊?怎么会啊,那我们马上来把这个删除功能来做一下啊 啊,那么删除的话呢?我们只需要一个按钮是不是就够了啊?也只要一个按钮,那么我们比如说就这个地方我们来改一下,比如说是 删除啊,删除用户啊,删除用户,那么删除用户的话,我们其实只需要知道选中的哪一行就可以,不需要从这里去获取, 对吧?我们点选了哪一行我们就可以把它删除吧,对吧?然后我们来还是一样给他做到槽里面啊,做到槽里面。首先这首先是不是这三行一句要用到? 到了我把它先拿过来再说啊?拿过来再说啊,这三行就是不是可以写成写到一个函数里面去啊?最好,对吧?啊?那么封装,自己要学会封装啊,那么在这里面的话我们就只需要,哎。 delete, delete 什么? 后面马上接上。呃,那个,那个 forum 来自哪张表,对吧?从哪个从哪个表里面进行删除啊?稍微温柔一点,哈哈哈。啊?那从哪个表里面进行删除啊? 呃,删除,删除什么呢?直接 vr 就行了,对吧?这些是不是都不需要?哎? vr 从这个用户表里面进行删除,根据什么来删除啊?用户名来删除用户名,这个用户名现在是不是没有?我们来获取一下。 q g 哎, user name 等于 n a m e 等于什么? 哎,感觉这里好像没有了,要么就是从上面去直接获取这个文本框里面获取,对吧?文本框里获取是不是最简单?那么这里面我们不从文本框里面去进行获取该怎么做? 如果不从里面进货去怎么做?有没有方法?那我们先简单一点好了啊?先简单一点, 其实就是 ui 点点 line edit, 对吧?这是不是根据用户名来的点 text 啊,其实也是可以通过,呃,通, 通过另外一种方式是可以的啊,我们先来把这种方式先给实现删除,现在应该已经能够删除了,对吧?嗯, 看一下,那么这样的话呢,真伤感,其实都有了啊,来点击一下,比如把 c c t 给删除,点击删掉了吧。啊?粘删掉了啊,那么我们,呃,我们再来重新再运行一下,应该 c c t 应该是没有了吧, 没有了,对吧?没有了啊,那么这样的话呢,我们关键是还得必须要借助这个东西,我能不能不借助这个东西来进行删除呢? 对吧?我能不能,能不能不借助这个东西来删除呢?哎,这样的话呢,我们就必须要知道的是什么呢?知道的是我当前点选的这一行 是哪一行?对,是不是这个思路啊?那么当前点选的是哪一行?有两种方式,第一种,当前点选的这一行这个参数是不是传过来了?搞个什么东西就可以了? 搞个全局变量,把这个东西复制到全局变量里面,我是不是能够马上获取 youtube name 了, 对不对?哎,那么我们就先采用这种思路来给大家来实现啊。那么搞个全局编案叫做什么? q model index 啊? q model index 啊,我们来看一下, 是不是首先要引入一下 q q model m o model 引电, ok, 那么我们来引入一波 q model index 其实就是属于当前行,对吧?当前行 q c u r r e n t current index 是不是这样?呃, in current index model 吧, m o d l 就是稍微长一点好了啊,我这里就稍微长一点好了,这,这是一个,我们来给他做成一个啊, 呃,这是一个指针,对吧?我们就给他直接声明成一个啊,变量好了啊,我们就不用指针了,在这里这样的话就可以直接进行复制啊,我们来看一下, 在这里面我们只要点选,我们是不是在下面加一行就可以了啊? current 这个 index model 等于什么?是不是就等于这个 index 啊?好, 好了,那么我当前的这个 model index 我其实是已经知道了,因此我只要在这里面直接获取就可以了,那么在这里面获取的话呢?我们其实就是这个 username 的这种写法是不是这样?或者是我们直接这个写就可以了,我们再来回顾一下,顺便啊把这个地方 ctrl index model 点什么 跟这个当前这个其实就是当前行了吗?对不对?行,已经确定了,是不是再确定什么就可以了?列啊,列,从这里面去确定啊,当前这一个列, at 第几列?用户名字第几列?第零列,第零列啊,转换成获取它的数据,用 data, 对吧?然后再把这个数据转成 string 类型, two string, 哎,啊,有了吧,啊,有了啊,那么我们这就 ok 了,我们再来看看, 现在的话应该是不借助上面了,对吧?不借助上面应该就有了,那么我们看看是否能够实现啊? 不借助上面,那么我们比如说删除个 b b b, 我们把上面给删掉,这个肯定是不会借助了嘛,但是当前选中的是哪一行我们也是知道的,对不对?那比如说选中这一行啊,删除看一下,这就没了, 那就 ok 了吧,我就注册一个,呃,一一好了再来啊一密码。这个啊注册一下啊注册成功正常感是不是都没有问题。那还有没有方法啊哈哈哈哈啊哈哈。还有没有方法 啊啊其他的方法啊。其他方法当然有了,我们可以直接获取当前的行获取当前行的这个缩影啊那 思路其实就是跟当刚刚的差不多啊,只不过呢是从怎么怎么里面去获取呢?是从 ui 点 table view 里面去获取啊。 ui 点点什么呢? table view 里面去获取获取什么呢?当前的横 to see current 什么呢? current index 对吧?当前选择的这一个这个就是当前选择的哪一行,我就是不知道了。那当前选择哪一行知道了然后我们就再来通过这里面去获取就行了,是不是就行了指定的这个 model 获取一下是不是就行了。那么这个方法大家可以后面自己去探索啊 啊我们就不多写了。那么刚刚刚刚两种形式你一掌握是不是就基本上是 ok 了啊啊已经通过相当于你已经能够掌握一个表的一个。真伤感了啊。也能这样的话下次。好接下去我想要回去比如 说我对哪部电影感兴趣啊对吧?我我可以把我的电影给他录入到我的这个数据库里面去对吧?然后给他拿过来好再来。 哎呀现在我这个网上有那么多的彩票号码中奖,我是不是可以把它存进去哎显示出来。哎呀数据库语句分析一下吧概率如何是不都可以做到 是不是很 ok 啊?哎那可以能够实现很多很多很多很多你能够想象到的功能了,这个就是一个非常经典啊,非常经典的一个案例了,给大家讲到了啊 啊,那么呃,今天的作业大家呢就要把这个啊用,就相当于是实现一个用户信息管理软件,对不对?用户信息管理软件啊,这就是不是很刺激了,就像比较完 整的一个软件了啊。那么这里面我大家有没有发现有个地方好像不太漂亮哎,这里面好像没有,没有给他 扩展嘛,对不对?哎呀哎,也不用写 ss, 想想 v b 当中我们学过扩展有个词 单词这单词是通用的,通用的单词能够自由的扩展,我们在 level 里面用到过一个属性 哎,奥特不是,除了这个奥特之外还有一个,还有一个 stretch, sti 听过没有,记起来没有好,我们就利用他就可以了啊,点选他设置他的这个属性嘛。 stretch 是不是 s t 啊?打完好了,横向的 stretch 勾上就可以了啊,勾上了呀,再再点一下就好了嘛,哎,是不是就可以了 哎,来预览一下,漂亮了吧这就漂亮了,你看填填满了吗?刚刚是不是没填满,现在是不是填满了,现在是不是填满了啊?就刚刚是不是空出来,我们再再来看一下,把这个勾去掉啊,对比一下啊,现在去掉了吧,去掉了,我们对比一下看看, 对比一下看看啊,现在是填满,刚刚刚是填满的,现在我们不填满,看看是怎么样的啊?那不填满就是你看这根线是不是就这样了,是吧,那你也就是说可以很想填满,也可以纵向填满,这个叫做横向填满,纵向叫做 whatever 是吧?一个叫做横向填满一个叫做 纵向填满啊我们如果说勾单纯勾上一个横向填满我们再来看一看刚刚因为已经看过了我们看看纵向不填满横向填满会是怎么样子的 哎预览出来你看横向填满了那纵向是不是没填满这里是不是这样的我们把它纵向也填满会是怎么样的呢哎把它再勾上纵向也填满我们来看看会怎么样的啊那么这样的话效果呃会比之前要漂亮很多对吧我们来看一下纵向也给它填满 哎这样填满可能就最后一行他就自动扩展对吧。自动扩展那么就其其实还是纵向不需要横向需要就可以了啊横向需要就可以了那这样就可以了 对吧啊那么我们今天回去的这个作业啊就通过他了那么我们先来把这个东西记下来啊这东西记下来这也太小了。 呃来记下来打一遍。我已经记住了啊打 s t r 属性设置什么呢? table view 表格内横向 扩展啊横向列扩展扩展啊使用属性什么呢? horizon 哎这个我们通过这个属性可以来代码进行设置啊啊 horizon to header h e i d e r stretch t r t c h last section 啊就通过这个 horizontals had a stretch last section。 啊谁弄出来的 啊是不是很长啊哈哈哈。很长他知道字起来比较好记啊中文可以中音翻译一下啊横向头扩展啊最后一列的一个扩展对拼接一下啊拼接一下对吧 啊老外就是老外就是这样的啊国风。是啊那么我们这这个地方好像还 缺了一个什么东西啊?笔记,笔记,我之前没提醒啊,笔记要你要把这条也要记下来,这条是不没记啊?笔记要把这条要记下来啊,比如说获取其中的某一列,对吧? 获取,获取什么呢?呃, table view 中当前点击行的 数据啊,对吧?这个是不是这个?哎?点击行中的数据啊?呃,这个中中间的零零表示什么呢?第零列 是不是第零列?第零列所以为零的这一列吗?第零列行的话就是当前行,不是,第一行 已经是当前点的内行了,对吧?啊,当前点的内行啊,这就非常的重要啊,那么所有的真商改,我们就通过数据库语句都已经 ok 了,接下去 靠大家发挥了,一个是把这个作业要完成,另外一个呢就是完成的同时你可以进一步的去深化啊,进一步的去深化。好了,那我们今天的课程就到这里啊。

今天我们来实现一个串口调试助手,这个串口调试助手是学长以前做的,今天我们就来仿照这个做一个属于自己的一个串口调试助手。 首先我们第一步就要实现这个界面,界面我们昨天讲了可以通过拖动空间的方式来实现,我们就可以在自己的这个主界面上拖动我们所需要的空间, 我们可以看一下这个窗口助手,有按钮,有下拉选择框,下拉选择框,选择串口号以及各种波特率,还有数据位数以及教验位,教验位停止位 开始显示以及 crc 教程,这些就是我们一个创可助手基本所要具备的一些条件, 然后可以进行一个 ppt 调试,这个也是后续可以实现功能。今天我们先将这个界面进行一个实现,我们可以拖动我们想要的空间, 拖动两个按钮, 然后这接收数据的这有一个巨大的一个编辑框, 我们可以拖动一个编辑框,然后将他拖到我们想要的大小, 我们可以把空间全部拖动,然后再一一的去改,我们也可以先拖动一个空间,然后再对这个空间进行一个名字的命令, 然后我们还需要一个发送框, 一起下拉筐,放波特,略串口号,停止位等下拉筐, 然后这个地方可以看到他是用的标签来显示的,所以说需要几个 摇钱, 我们拖动好以后就可以给他简单的布艺下去。 我们使用 q t 的一个优点就是可以根据自己的想法来拖动,改变控件的样式, 也可以直接复制粘贴一个, 可以看一下有什么数据位,校宴位,停止位, 然后我们可以在这里添加我们所需要的下载, 当然这个串口号我们可以添加,也可以不用添加,等我们写代码让它自动时,然后这个波特率是需要我们自己 添加上,比如说我们最常用的 九千六百,我们最常用的十一万五千两百, 其他的我就暂时先不演示,我们先保留这两个,然后数据位就是其位, 然后叫燕位,也可以加上吴叫燕,齐叫燕,偶叫燕,然后停止位的话就是一位两位。 需要一个打开串口的按钮, 可以打开 tcp 服务调试的按钮,以及一个 crc 教练的按钮和一个发送数据的按钮 后,我们可以对我们的按钮进行一个布局, 这就是我们实现的一个基本的界面,当然我们实现好的界面就会 加上布局,以后的界面就会显得比较标准,比较统一的一个界面, 这就是我们可以做到的界面,当然也可以把界面做的更美观,可以给他加上背景图片,或者是打开窗口,关闭窗口就有一个颜色显示, 我们也可以通过手动填写这些显示的数据,然后我们也可以通过后续在代码中添加这一些显示的串口号, 波特屡屡这些数据可以通过代码来显示,后续功能我们下一节课再讲。

好,那么同学们啊,今天的话呢,我们就是给大家呢开个头,呃,我们接下去的课程的话,主要是学这个叫做 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 当中怎么去实现啊?其实就是在 c 语言当中怎么去实现啊?挺好,那么在这里面的话,我们关键是要今天要学会一个资源 的加载啊,对吧?资源的加载,加载啊,在 q t 当中 qt 当中,对吧?也就是说在我们的啊 c 加加语言当中啊,如何去来写这样的一个程序啊? 那么资源的加载以及利用啊,资源的加载以及利用,那么我们在这里面资源的加载和利用,我们一般来说这这个地方我们还是要进一步深入一个空间,叫做雷博空间,而我们在雷博空间在 q t 里面 有个不一样的名称,叫什么呢? q 那个,哈哈哈哈啊,因为大家呢,没有写过用代码去扭出来这个空间,对不对?所以你现在可能没有这个概念,但是你要现 在要建立这个概念,假如说你没有把这个空间拖到这个界面上,那么此时你就要把这个 q label 引用进来, ok, 加去,你有一下这个 labor, 是不是这个就就就到界面上来了啊?待会我们就用这种方式, 纯代码的方式来完成今天的这样的一个课题啊,好,那么一个是纯代码啊,另外一个呢?就是,呃,要载入图片,对不对?载入图片,那么我们要需要的 一个是利用把这个财路图片载入到哪里呢?就载入到这个 q label 空间上 啊,空间上啊,在录图片,图片,我们知道之前的话其实是文字,是不是很基础的一个文字?现在呢?我告诉你, 他还可以载入图片,再颠覆你三观的就是还可以载入魔鬼,什么 魔鬼?是什么影片?嗯?视频对吧?啊?他可以再录很多,那么我们今天的话呢,就让他来再录这个图片啊,再录图片,那么既然是轮播啊,轮播,我们在这里面思想肯定还要用到一个什么空间呢?叫做, 哎,时钟空间,对吧?时钟空间,我们叫做什么? q timer timer, ok, 有个 are 对不对?那么在这里面我们要注意 q time 和 q time 是有区别的, q time 是什么? 呃?获取时间,我们可以用来获取时间,可以用来设置时间,对吧?那么同学们在学 会我们前面这堂这个 q t 课的时候,大家应该要逐渐去自我去总结出一个规律啊,要学会举一反三,怎么样去总结出一个规律? 你们在看到我在写这个代码的时候,我今天还会再一次来进行演示出这样的一个过程啊,你看看你自己平时的时候有没有写总自我总结出这个规律是什么呢?我先写我要实现的这个功能 啊,比如说我要设置文字,那么设置文字中间我需要这个文本,对吧?那么文本来自于哪里?对不对?我再去找他的源,或者说你熟练了以后,可以直接先写这个源头啊,这个来自于哪里,对不对?这个文本字幕上来自哪里?那么 同样的道理,我们今天的这个图片轮播,我们就要把这个图片载入到这个空间上面, q 雷宝上面,对不对? 那么这个 level 上面的空间载入的时候,我们需要用到的他的一个设置,他的一个图片的一个属性叫做 pix map, a pix map, a pix map, 而这个 pix map 就是用来控制它的图片的各种设置的啊,那么 pix map 啊,我们在 q t 里面呈现出来叫什么呢?叫做 q pix map 啊, q pixma 啊,那么它就是用来什么呢?承载图片的一个容器, 存在图片啊,配置图片的容器,那么我们最终再把这个 qpacs map 的 啊,这个图片我们载进去以后,我们再把这个容器把它载入到 label 上面,那么最终就 可以显示了。那么这个逻辑就应该是这样子的,第一步啊,过程,第一步应该是要先创建一个什么呢? q pix map 啊,首先要要有,对不对? q pix map 对象 啊?第二步就是,呃,在这个 q label 中载入这个 q pixmap 对象 对象, ok, 这样就可以显示了,很简单啊,就很简单。那么再接下去,最后就是通过时钟控件啊,来通过时钟 空间来什么呢?修改图片的路径对不对?使用空 修改图片路径啊,就这样的一个过程就可以了啊,那么这样子来实现一个图片的一个 切换,切换好,那么呃,这一个案例的话呢,我也是有段时间没做了,但是呢,我们刚好可以按照我这个思路来下来啊,这个案例我记得我以我是在之前的这个拍摄 课程上面给大家是有讲过的,因为我的拍摄呢,我们在一个高级应用课程里面用到的就是 pyqt 五啊,思想是一样的啊,那么我们现在就马上来开始进行实战啊, 首先来新建一个项目,新建的这个项目我们来把它放到这个 s 的这个文件当中,首先我们就流进于编程,二零二零年,哎哎,录了啊,二零二零 年什么呢?八月三号啊,二零二零年,八月好了啊,八月,那么我们后面可以把它放进去啊, 那么我们把这个呃文件的话呢,就项目创建到这里面啊,文件夹现在是空,文件夹有了,对吧?那我们来创建一个 q v d 词,这是项目的一个基础啊,大家我相信应该都没有问题了。好,那么我们接下去来选择我们的这一个 文件夹,这是八月份啊,后面我可以都给他创建到里面去,那么这个我们就是啊,今天的日期吧,泰式的今天的日期吧, 八月三号 tst 零八零三,这样我们就以后后面所有的项目都保存到这个文件夹,我这个文件夹就不删了,对吧?后面的路径我就不用选择了,不然每次都要选择这个路径比较麻烦啊,那么我们就下一步啊,再下一步 啊,到这一步我们还是用纯 qv 的啊,只要学会他后面的这个 mv 的什么都是一样的啊,用法都是一样的啊, q 代劳的这些用法都是一样的 啊,那么我们还是一样啊,他叫做 test 好了。呃,这个是图片轮播吧,图片轮播我们就哎就一样,反正就是一个窗体的名称而已,对吧?那么我们今天的话呢,把这个勾给去掉, 去掉去掉又意味着什么呢?我们有没有脱窗体的界面?没有了吧?哎,那么我们就来,哎,通过这种探索性的实验啊,我们来把它完成掉,完成 好,现在我们看一下啊,载入窗体之后是怎么样子的?你有没有这样子尝试过把这个勾给去掉,哎,发现少了什么? 没了吧,只出现了一个嗨的文件,一个是啊,原文件,对吧?还有一个是工程配置文件,就没有我们另外一项,那么我们这个时候能浏览吗? 看一下对吧?我构建一下能浏览吗?这是关键出来有没有有的发现还是有的,为什么他是有的? 这是一个窗,哎,是一个窗体,无位置,但是还没有回答到。呃, 更为需要的这一要点上面什么呢?既是一个规矩的同时我们要明白他为什么会出现错题。最顶层的这个规矩的是什么? 创提是不是啊?之前的笔记当中是不是见过?哎,最顶层的这个规矩他就代表一个创提 啊,里面的位置就是一个空键,对吧?哎,这是一个关键啊。那么现在我们就在这个窗体 test 的这 tes 是不是一个窗体啊?哎,我们就在这个 test 这个窗体里面,我们来创建我们的空间,首先我们来创建一个雷宝, 创建一个雷宝,那么想要创建一个雷宝的话呢?我们首先就要怎么样呢?是不是要把这个引路进来?那么我们在我们这这个特色的头文键当中,我们把这个雷宝给引路进来, include 啊, q 雷宝吧, 对不对? l a b 其他的空间全部是这个道理,现在我给你演示的是一个 q, 来吧, q taxi box q, 破虚吧,疼,是不是都是这些啊?一样的啊,你要学会一个之后你要知道举一反三,后面的代码我没有空,没有这 情况下的,没有,没有不能拖的时候,该怎么写对不对?而且有一些空间我们是要自定义的,你要自定义的话,那你不是要制作自己的空间吗?对不对?那你把自己的内裤引入紧了你的内裤里面,你的内里面包含了很多其他的空间组成的,比如说你制作一个登录 空间,或者这这个就是登录类吗?对不对?这个登录类里面我一旦引入进来之后,这个类我就是一个,比如说是有有用户,没有有密码,那么我从此以后我运用的时候,我只要把这个类载入进来就可以了, 是不?就这样啊,我都不需要去编辑,就不需要拖,我只要引路啊,引科路的这个东西进来,我一扭一下这个类我的窗体就出来了,我就设计好了,做一遍就可以了啊,这是未来的一个开发啊,未来的开发,那么我们 q 来吧,先把它引入进 啊,首先是要把这个内裤拿进来,拿进来之后的话呢,我们接下去开始的是把这个,呃,要要怎么样呢?要怎么样?要要声明一下吧, 对不对?是不是要声明一下啊?那么我们使用它首先要声明有两种方式,我们要给他使用的话,第一种方式我们来回顾一下,第一种方式,我们如果说直接想要声明啊,并且已经实力化可以用了,那么我们在哪里写呢? 是不是直接在我的这个地方写写写一个声明就可以了?比如说我们 private 啊,因为只能这个内用,我们让他啊,所以我们在这个时候,我们是不是在这里面直接声明一个 q a 宝就可以了, 对不对?这是不是一个全局变量?因为我们后面是要用的,比如说我们让他变成雷宝,图片也卖举,可不可以啊?啊?那雷宝也卖举好了,我们就这样好了, ok, 那么我这样声明了已经,那发现他这东西 啊,雷宝没有变颜色,意味着就啊是错掉了,对吧?这个时候你就要注意一下,当然有时候的话他可能没有反应过来,没有反应过来也是一种可能性,你后面再重启之后,这个软件重开之后发现再再没有反应过来,那就可能要再看一下代码, 对吧?有时候可能要编一下啊, ctrl 加 b 编一下啊,这是一种情况啊,一个声明。那么我们先来看看采用这种情况的应用啊应用,那么这种呢?其实比较简单,这是一个空间,我已经有了吗?对吧?那么接下去我就是往这里面去载入,那既然要载入图片,那么 哎,而且关键是你在这个地方你全局变量是有了,但是你好像看不到他在哪里,对吧?就是说你这个空间是不是要放到当前的这个 pass 上面,这样仅仅只是作为一个变量, 对吧?啊?待会如果说没有放到这个空间上面的话,设置到这个空间上面的话,哎,也就是没有设置到这个 test 这个窗体上面的话,他可能就没有了,就会啊,那么可能会出现这种情况,所以我们现在暂时要考虑的到, 对吧?是不要考虑到,如果说你用指针的写法这个地方,我声明一个指针,那后面我在构造方法里面,在这个地方就是一个构造方法,对吧?构造方法里面指针的名称等于六好 q level 括号 ces, 这就是不是把它直接加入到的这个床梯上面了啊?这就指向了,对不对?现在我们其实是 没有指向的,那么我们先用这种写法啊,先用这种写法,两种方式必须都要会啊。那么这是一个 我们现在接下去想要在这个窗体,那么我现在不是,现在不是有这个 q 内部了吗?对不对啊?那么我们现在是不是要给他设置设置这个?呃,图片是不是用这个 set q pixmap 设置他一般我们就设置什么就 set 啊,去获取什么就 get, 这个要养成一个习惯啊,包括设置文本是不一样这样的,哎,那么我们设置 qpics method 之后,我们发现这中间要用什么? 他的参数是 q pix map, 是不是一个 q pix map 啊?所以在这里面你要最终传入的结果一定要是一个 q mix q pix map 的一个类型,是不是啊?既然要传入这样的一个类型的话,有两种接法啊,又是有两种, 对吧?一种是你在你把这个 q pix 那个变量写到外面,然后变量的形式传进去,对吧?指针变量的形式传进去。那么另外一种就是直接再怎么样 在这个地方直接溜出来就可以了,对吧?但是有一种这里直接溜出来的话呢,有一个弊端,这个弊端就是你可能对图片的设置功能上面就没有了 啊,就没有了。那你如果说想要具体的设置就要单独的去写,那么我们先采用最为简单的一种方式啊,最为简单的一种方式就直接给他载入进来啊, q, pixman, 我们发现这个内裤有没有引入进来 是不?没有啊,先要把这个内裤给引进来啊,先要使用 pix map 的话啊, include include q, pix map 录进来内裤啊,这第一步啊,第二步 q k x max 啊,我们这样如果说直接载入括号这种形式,就相当于是 new 了一个, 你有了一个这个对象,你有了一个这个对象,怎么意思?什么意思啊?这个 q, 呃, qpix 是一个类,然后呢?我就相当于是以这个类作为模板,我创建了一个对象, 对不对?创建了一个对象,那么在这里面我就可以相当于是对象上面我们是可以设置他的一个图片路径啊,什么什么的,对不对?我们看到他有一些参数,当我们宰完之后,你这个地方是不是有个上下 哎,我们怎么样让他出来呢? ctrl 加上 al 加上斜杠啊,代码,我们再来看一下啊啊,这个地方我们记一下 out 加上斜杠快捷键, 快捷键啊, alt 加上斜杠啊,这个,这个快捷键用来干什么呢?可以代码提示啊,代码提示, 当然这个代码提示是我自己设计的这个东西啊,因为我为什么要设计呢?设置这一个是因为可以跟我们的这个下次给大家讲这个安卓开发的时候用 eclipse 这个工具,或者是用安卓 siri 这个工具的时候,我们跟他的这个代码快捷键啊,一致 啊,一致。那么默认情况下他这个地方就是呃 q t 里面的 q t 里面的这个工具,默认情况下他是什么呢?他的快捷键代码提示叫做康求加空格,但是我们知道康求加空格这个快捷键其实是跟我们的这个什么东西冲突的,是不跟他, 他是冲突的,他不是中英文切换就开出快,是不是啊?冲突的,冲突的,我们在这里面就不能用了,所以我要把它改掉,那么刚好也给他可以改成我们的跟我们的 eclips 后面这个这款工具我们可给大家再讲。 app 开发的时候就跟他是 一致啊,就一致,所以大家就养成这个习惯。那么改到哪里去改呢?让我想想看哈,这倒是好久没有没有改,我们选项里面看一下啊,这里面有一个, 呃呃,边我看一下,让我想想看啊改应该是有个地方快捷键,我们搜搜看, 有吗?哈哈。没有没有,呃,我想想看一下环境,哎,环境里面 键盘啊,有一个啊,这里有呢,这里有了,我们搜一个叫做 com compose come pose 啊,看到没有?这个这个看到没有啊?搜出这个来, text editor, 这下面有这个东西,然后呢我们就可以在这个地方就可以改成我们的这个快捷键了啊,改的时候我们直接按进去就行了啊,快捷键就是怎么样他就会在这里自动就生成了 啊,那么默认情况下他是 ctrl 加空格的啊,到到时候大家使用快捷键的时候,你要学会在这个位置 代码提示快捷键是不是很重要啊?对你来说是非常重要的啊?啊,那所以这个时候就可以通过这个情况来设置啊,那么我们现在来看到先看代码提示这个地方, q pixnel, q pixnel, 我们可以上下是不是可以按啊?上下啊,听好啊,那么上下 在按的时候,上下在按的时候你会发现什么?他是不是有多种不同的形式?第一种形式就是指什么都没有传进去, 什么都没有传进就是相当于是溜了一下这个泪,对吧?但是这个泪里面什么都没有啊,溜了一下这个泪就变成了一个对象,这个对象里面什么都没有,意味着图片是不是也没有 啊?那么我们再看第二种形式,这个有八分之一,现在看到八分之没有。八分之一是指他有八种构造方法。 八个构造方法啊,八个构造方法在六的时候我们构造方法是可以重改的, 什么叫八个?是不是因为他是不是重复了,对不对?构造方法是可以重载的,重载构造方法,这叫啊,在 c 加加里面是可以进行重 重载,重载之后呢,我们他会有八种不同的形式,那么区分在哪里?第一个没有参数, 第二个有一个参数,并且是这种类型的,对吧?第三个是这个参数的类型,对吧?啊?参数的类型不一样啊,那这个就是一个一个宽度和高度嘛? w 和 h, y 是和 hat, 是不是啊?哎,这是,刚刚是这个也是一个,这又是一个大小 q size 啊,又是一个 q size 的,一个内裤啊,穿进去一个大小,那好,我们发现一个非常好用的,这个叫做什么?是俊类型的,是不是?是不是可以用双引号直接写了,然后呢? 啊,那么我们就可以写一下图片的路径,是不是啊?哎,那么我们此时就可以直接写了,但是我们发现图片路径,我们是不是图片是不是还没有,对不对?我们把图片得搞进来,知识要点讲完 图片好像没地方宰吗?对不对?那么在 q t 里面的话,我们想要载入图片就要设置一个叫做什么呢?新建一个资源类啊,新建一个资源类,然后呢?把我们的图片放到资源类里面就可以了啊,那么我们现在来新建一个资源类啊,右键,右键。 哎,新建艾特牛啊,艾特牛,对吧?艾特牛。好,我们要添加一个,叫做什么呢?叫做选择 qt, 选择 q t resource fire 啊, q t resource fire 就是资源文件,对吧?这些资源文件其实还包括不仅包括图片,呃,视频等等,对吧?这都是都是你的资源文件啊,因为通过这种形式引用进来之后,我们就可以传相对路径了啊, 就就他是一个拆没有的最终的一个形式。好,接下去我们来把这个点击下一步啊,点击下一步之后进入,进入到这里,那么我们要把这个资源文件默认,我们先给他取个名字啊,假设我现在取个刘金玉,然后这外啊,这是我的这个资源,对吧?啊?比如说后面的话,如果图片我们还有一面,就可能还有继续的细分, 对不对?如果是视频,那么我们就细分成视频,对吧?等等啊,那么我们默认这个路径,项目路径已经 ok 了啊, 啊?已经 ok 了,那么我们直接点击确定就可以了,确定之后我们会分生成什么呢?左侧,左侧马上会生成一个 resource, 对不对?哎?然后双击这个之后,我们会发现这个地方我们多出来一个这个东西,是不是什么都没有啊?什么都没有,我们首先要做的是什么呢?添加一个前缀 啊,添加一个前缀,这个前缀是什么呢?这个前缀就是我们待会要引路进来的时候,我们先要写他,就相当于给你区分的一样, 相当于是给你区分区分这是你的,这是我的,或者说是类别什么的区分。就像我们可能有我们写一个空间的时候,我们空间的命名前面一般,我现在教大家都是不是要有个前缀 啊?内部空间、标签空间,我们给他简写的时候先写成什么 lbl, 是不是啊?这个就是前缀啊,我们通过前缀可以快速的去区分我们的这些资源,可以快速的去查找到, 对吧?啊?那么这是前缀的一个作用啊,那么我们假设就让他我们所有的前缀都是用 lj 外号,好不好啊?就用 了解完,那么这个是资源的名称,这是资源的名称,这个是我们使用的时候呢,这个前缀的名称我们待会用的时候大家就知道啊。 ok 了之后我们接下去要干什么呢?就往里面添加图片文件就行,对不对啊?那么我们图片文件现在发现是不是还没有啊?我们来拿一些啊,从之前的这个教程当中取一些,比如说我们取取一些页面举 啊,有飞机有这些,对吧?啊,那么我们比如说就这几架飞机好了,好吧,就这几架飞机作为我们的图片啊, ok 啊,我们复制了一下,那么在我们的这个项目下面呢,这个是我们项目文件夹,这是我们的元代码项目,对不对?在元代码下面我们把图片给放进去啊,一般这个图片肯定要考来考去的嘛,对吧?所以你要放到你的原 代码项目路径下啊,新建一个文件夹交易面具,这个是不是习惯了?网页是不是也这么做啊?哎,然后把它复制进来我们刚刚的图片就可以了啊, dg 零一, d 一,零二, dg 零三, dg 零四啊,这是我们的这个图片, 首先要把真实的文件资源考进来哦,接下去就是把这个文件的添加进来,对吧?把我们路径下面的这个文件给他要添加进来,哎, 把他所有的图片选中添加,点击打开就可以了,好,这样是不是就进来了?而且他的路径是不是在你的前缀之后的文件奖,呃,图片这个文件奖下面的 这些具体的图片,对吧?那么与此同时,如果说你想视频的话,是不是又一个文件夹,或者是我普通的文件是不是就又一个文件夹, 对吧?这是一个个自己的区分啊,那么,呃,我们在这个位置别名啊,我们暂时就不用了啊,我们就发现图片是不是就已经有了,那么如果说想要载入图片的话呢,我们在这里面直接就可以写了啊,那么怎么写呢? 就按照这个路径来写,注意写图片的时候我们想要载入这个志愿文件的图片,首先要载入他的啊,用他的相对路径的话呢要用一个冒号这个符号作为开头作为开头,然后对 啊就分这里只能用这个相对路径,好吧冒号来开头。对啊,这也是一个因为我们要考来考去的。那么相对路径和绝对路径有什么区别? 现在我的这个项目工程写在我的桌面上。你是在你的桌面上啊,你想要 比如说你要给你的客户用啊,可你要发给他吧,发给他之后他可能存到你的地盘或者 e 盘或者他的其他的文件夹,那是不是跟你不一样啊?那你他打开的时候就打不开了,为什么?因为他打开的时候你如果是绝对路径 对跟你的路径就不一样了,你是在桌面上对吧?那相对路径的话就是是相对于这个文件夹的,而不是指其他的。 这个文件夹是指哪个文件夹呢?是相对于你这个项目文件夹的,是指在你的项目文件夹下面。我不管你的项目放到哪里反正我这个路径是相对于这个项目文件夹下的, 对吧?哎这个就相对路径的一个好处了啊,那么我们在这里面直接引路。那么首先这个前缀对不对?然后是一迈举是不是啊?然后就是 b 机啊,我们来查看一下啊。他也没有提示,我看看有没有按 l 的键。 提示不了啊,提示不了,那么你就直接在这个位置卡住了,那么你就在这个位置呢,就直接使用就可以了。右键。 呃卡成这样吗?啊?在这里因为已经打开过了,都没有切换过来啊,那么就是叫做爱的美下滑线零一,对吧?爱的美下滑线零一啊,我们保存 好,我们在这里面叫做 a 呢,没下划线零一点。什么 png 是不是?这是全称?那你把全称要写好,我们 ctrl 加 b 一下啊,把它编辑好, 那么这里面的话他倒是显示出来了,对吧?虽然说我们用的是相对流行,但是你看这个地方你他显示的是什么?这个就是 区别啊,看到没有?我们把他图片显示出来的时候,哎,有,他是不是绝对路径了?对,具体的时候他这里显示的时候会绝对路径,因为每个程序在 使用的时候其实是属于绝对路径,对吧?因为你写的时候是按照相对路径来写的,所以他会去获取你的这个路径项链到底是什么,对吧?那么他的绝对路径是怎么来的呢?是根据你的项目来的, 你的项目在哪个路径下,那么他的绝对路径就在哪里,对不对?后面的就是跟着你的项目来的,对吧?就像我们这个图片一样啊,明白了啊,那么与此同时我们就可以把这个图片,哎,应该来说飞机应该能能够显示出来的了,是不是只有一条渔具啊? 这个应该是这样了,对不对啊?我们看看有没有啊?首先 没有 对不对?那首先第一个怀疑是什么啊?这个空间可能没进来,对不对?我们之前是不是讲过这个空间要进来啊?那我们把这个空间给加进来。雷宝一迈去点设置到哪里呢?设置到他的设置他的漂亮,他为什么当前的床体对死, 是不是这样?哎,这就是把空间写成全剧变量,没有用指针变量的时候呢,你就要单独的去加入,是不是就来了飞机就载入进来了啊,那么我们控制他的位置呢? 哎,我们现在太太这个位置了,我们要控制他的位置,哎,对,类似于这样子,类似于这样,对吧?那么我们直接还是,哎,来吧,我们要去点 stat 什么呢?不是 xy 了啊。呃,或者是他的好像有个 resides 吧啊? reside 瑞塞子里面包含了宽和高,一个是大小,另外一个我看看有没有包含他的。 没有啊,这个看来只有他的大小啊。这个我们是可以设置他的大小,那么我们先来试一下他的大小吧。既然用了他那么首先我们比如说设置他为三百像素啊,高为三百,三百像素吧,都为三百吧, 我们来看一下啊,他到底是一个怎么样的一个情况,哎,我们还没加分号,这里面我们要高级语言当中我们每句话后面都要加分号啊, 好。哎,这个是什么样的一个情况?就是他设置的是什么?哎。设置的是你的 空间的,这是不是设置的是你的空间的这个大小啊,对不对?图片还是 在这里,你我们设置的是不是页面卷啊, label 啊,对吧?有没有设置这这个图片啊?没有, label 变了,图片没变,是不是?而图片的控制我们具体是用什么来控制的? q pix map, 是不是因此我们把这个东西是把它拿出去啊,单独来写啊,哎,我们把它单独来设置啊,单独来设置,这样就可以做的更多了啊,那么单独设置的话,我们怎么来设置啊?我们先把这个东西我让他报错,还暂时先这样,我们来单独设置一个 q pix map 啊, q 啊,皮克斯曼,对吧?我们设置一个变量啊,这个地方我们用一个指针类型啊,指针类型,或者我们用啊皮克斯曼啊,看看啊 啊,这样也可以啊,我们指针类型好像没用了,我们就用一个指针类型看一下啊,指针类型该怎么去用? q pix map, ok? q pix map 啊,我们指针类 是不是要用加信号啊?对啊,生生米子的类型信号信号什么呢? px map 啊,比如说 pm 好了啊,等于六你有一个对象 q px map 是不是?这是不是常做的啊?我们就什么都没有默认啊啊?我们要分号,要加, ok, 那么此时我们要给他复职了啊。 pm 点设置,首先要载入图片吧,对不对?载入图片我们漏的一张图片就可以了,这是不是发要那么来了? 是不是啊?那么直接载入图片就可以了啊?刚刚我们看到他的一个参数说明了,对吧?这是图片的载入啊,那么图片的大小能不能设置呢?我们来看一下,首先他有一个叫做 feel, feel 是什么? feel 里面我们看到这个地方他的参数, 我们看到的,我在写的过程当中,首先我要知道他有什么方法对不对?然后呢?方法当中我们要看的是什么参数的,什么类型, 对不对?我们根据参数的类型,然后再去写我们这个对应的这个变量到底是怎么样的,想要去控制这个东西的话再写他的变量,这是不是有一层一层套过去的, 这是不是这真正的这个举一反三的一个效果啊?哎好,那么我们这是一个 feel 啊,那么还有没有其他的呢?我们来可以看一下。哎这是不是也有个 size 啊? 这是设置他的 q size 是不是这 size 其实是获取他的大小啊,大小了,因为因为他你们你又点了这个地方地方你看没参数的吗? 对不对?战术有吗?有的话他会提示的要再加上说没有啊,哎他仅仅只是获取而已啊,这仅仅只是获取,那么设置的话我们还想到一个赛对不对?发现赛的是不是也没有啊,因此我们在这里面的话呢就用一个杠杠的啊,这个叫做 我们再看一下啊它的 skill 的啊, skill 的其实也是一个尺寸,是这个 skill 的,大家这个词也要知道啊,这个是一个尺寸 go 这个词要了解,也就是我们经常会用到一些设置的一些相关的词啊,大小尺寸对不对啊?尺寸就是 skill 的,把这个英文单词要记下来啊 啊那么我们发现他是不是可以用啊?哎那么我们就直接设置好了哎那么我们他为呃假设我们他为三百啊,就我们先两百吧,让他有点区别 啊,两百那高也两百吧啊啊这样是不是就设置好了后面的两个参数可以不变让他默认,然后那么我们设置好之后这个东西该如何使用呢?就把这个变量传进来就行了。我们一开始马上会想到 pm 哎当我们发现使用 pm 的时候怎么样 不行啊是是不是不行啊?那么为什么呢?我们因为仅仅使用 pm 的时候这个东西 pm 表示什么?表示的他是一个创建新的 他是一个指针,指针类型的变量指针类型的变量但是他最重要要要的是是指针类型的变量吗?我们来看一下 santa pixman 你看他有有指针吗?没有吧 啊要取要使要直接最终用的结果是 qp, smart 这样的一个类型并没有用指针 对吧?没有用指针。因此我们如何根据指针去找这个对象呢啊直接使用新号就可以了取他的值吗?指针对应的这个值吗?那不就是对象了吗? 对不对是这个意思吗?哎所以我们要加新号此时要加新号。在 c 家家里面 啊,同学们经常会把指针变量,指针变量地址取地址变量这些东西经常会搞混掉那么我们要 经过大量的练习来进来进行感悟啊。这个是这样才是呃王道啊这样才是王道啊。那么我们此时再来看一下啊会不会有点作用啊此时来看一下哎 康秋佳啊对吧或者发现什么东西没有好像没有太多的变化啊没有太多的变化我们来看一下这个地方三百呢有没有有没有变化呢 哎也好像没什么太大变化哎但是他变了什么东西啊感觉好像好像变了什么东西啊不是我不不写这条看一下啊。 嗯好像没有什么变化对吧没有什么变化啊那实际上呢我们我们就最为简单一点好了把它进行填充好了看一下。嗯 嗯我们再看一下 sgo 啊 skill 的其实是有的啊那我们先来设置一下吧 两三百三百像刚刚大家所提出来的这个情况我们把它忽略掉啊那么这样子就忽略掉了对不对哎我们看看是否可以 ctrl 加啊 哎变化的是什么哈哈。妆体变了啊妆体变了哎 哎那你瑞赛之后他的窗体就跟着变化就跟着这个空间的大小变化对吧哎那么我们此 是的话呢我们呃在这里面的话我们看一下啊就通过另外一种形式设置他的大小我们看看 哦这里面还有个坐标 qpndy 四是指设备啊 大小呃 size 那我们暂时先这样吧。好吧后面再调节我们先来实现这个图片的一个轮播的切换,好吧把这个主题回过来啊回过来。 那么现在的话呢图片其实是有了啊待会我们再来控制这个大小因为大小的设置我们也可以通过帮助文档这种里面去看一下啊因为我们本节课的要点先要实现他的一个轮播那么轮播的话其实大家思想应该一点改变什么就可以 改变这个就可以了对吧改变这个就可以那么我们先来试一下改变以后是否可行啊那万一不可行怎么对不对啊要可行啊可行那么我们首先还是要把它引路进来对吧?引科路的 q 胎是 q 胎吗?引路进来好那么我们引路进来之后的话呢我们要写一下我们的这个 q 胎吗? q t y m e r 啊 q 弹啊啊用指针类型啊 q 弹啊一好了啊 那么我们此时是不是要搞个槽啊啊这还是一样啊,这每节课都要练习的 private private 曹 s o t s r 哎,孟浩你写的太快哎,好,我们我就写空好了啊,空的我们比如说是买方格选一 啊,切换图片的,这个就用来切换图片的,那么我们此时的话呢, ok 了,这里就 ok 了啊,我们是不是要实现他要的加加上回车好了,这里就实现了啊,那么我们接下去还是一样要是不是要进行关联? 好,我们来想一下,首先啊拍么是不要给他实力缓一下,拍么一等于六 q 拍么? 这是吧啊实力化之后我们要进行关联 connect 信号槽的一个关联 pm 一的信号啊,然后呢是信号 对象是 tme 发出的对吧?信号 sig nl 信号信号是什么?贪奥贪奥 time time out 对吧,这是不是可以找到通过帮助人道是不是可以找到他的信号哎然后接下去我们再来 到窗体上面的这一个槽 slot 是吧?哎,是,这个是买方形衣 ok, 这就写好了, 信号差已经关联了,那么也就是我们要让他每隔一段时间要执行这些东西吧啊执行这些东西吧,嗯 啊,那么我们呃赛特漂亮的还要设置吗?我们先不复制看一下只只让他改变这个只让他改变 这个参数对吧,我们看一下只复制这两行看看会不会改变啊,会不会改变。那么这里面时钟空间还要启用一下吧,不然不能用啊,太猛一点斯大的,比如说我们让他一秒钟改变一张啊,一千。 好,接下去我们发现这里面这样使用可不可以,为什么?因为他是一个全局变量吗?不是对吧啊?把他是不是复制一下,把他做到全局变量里去啊? 哎, pm 给他去掉,把他做一个全局的指针啊,全局的指针, ok, 这个全局的指针就做完了, 好, ok 了啊, ok 了啊,那么现在的话这个地方好像是生下了,对吧?那么我们现在的话无非是不是要把它进行改变啊? 啊?把它进行改变,那么这个值的改变就是一个数值。数值,我们是不是要做一个全局的数值啊?啊?全局的数值,我们一共有四个啊, 我们先把它做一个全局变量的数值,我们就声明一个全局的变量叫做 number 好了,好不好? number, ok, 那么我们把这个 numble 默认情况下让他变成 一吧啊?默认是一,那么是一的话呢?我们在这个地方直接用啊,默认男宝先先是一,先给大家复制一下,对不对?那么这个这个东西我们是不是给他做成男宝就行了 啊?注册 napple 的话,我们是不是直接直接对用支付串连接一下就行了?连接,那我们这里直接连接行吗?是不发现不行,那么我们是不是要进行转换?转换,我们是 上次说不说过用 q s 俊啊,那么我们把 q 是俊要引路进来啊,引路的啊, q 是俊, 好了,切换过来。我们现在 qsgin 如何进行转换呢?他有一个静态方法啊,叫做 克斯俊,冒号 numble, 不是 too 啊, numble 转数字要用 numble 这个啊,这个好,这个在我们前面很早的课程当中应该是有讲过的,那么这样的话就能够转了啊,这个叫做数值转 支付串,对吧?啊?数值转支付串啊,那么我们这里面的话呢?下面是不是也是一样啊?下面我们这个地方也是要用 q 难保,对吧?这里面这里我们是不是要改成 q 难保或或者整条我直接复制一下 好复制一下,但是我们每执行一次的时候这个 number 要怎么样呢?加加对不对? number 要加加,你说要加一,那么什么时候要给他制回去啊?如果说我的 几张图片刚刚四张,四张男宝这个数值我大于四的时候我就让男宝恢复成第一张,那就轮播了对吧?轮播了,好,那么我们来看一下是否可行啊?好像代码已经没有问题,我编一下看看 ctrl 加 b 是否能够变异通过啊?变异通过了对吧?我们看下去加啊啊 哎,来了吧啊来了啊,一秒钟一张,说明我们这节课的一个目标已经达到了啊。 那么我们接下去来看一下如何来改变这个图片的大小。那么在改变图片的大小之前我先要跟同学们教一个新的东西啊,新的东西是什么呢?我们要 labor, 是不是此时我们就进来了 labor 空间,但是你看得到吗? 也看到了,看到了内部里面的这这个东西,但是内部这个圆形你看到没有?圆形其实是没有看到的,对不对?那么我们如何让他现圆形啊? 哎,我们在网页当中往往如何让一个 div 现出原形呢?加边框 对不对?那我们此时是不是同样的道理来看一下对不对?那我们来试一下啊,加边框是否可以能够看得到他的边框,对吧?我们首先来如何设置他的边框呢?其实在我们的这个 呃界面上使用的时候啊,我们其实会操作起来会比较简单啊,我们而且可以直接设置,那么我们现在存代码的时候该如何去实现呢?也是可以实现啊,也是可以实现,那么我们先来看到这个, 这个东西对不对?我们是不是给他加一点东西啊?我们关键是要加什么东西呢? 加什么东西?我们可以简单的来看一下有没有跟边框有关系的东西啊?这个马云好像很熟悉吗?是什么?那个外边,外边,哎,外边句一样的意思是一样的 啊,我们设置的时候也是一样的啊, picks map 用过了, pikachu 也是设置另外一种,只是只不过另外一种类型的图片,对吧? pix map 就是它的功能反而更加强大。嗯,那么我们在这个 word 这文字的一些转换啊什么的,然后这个地方选择这个好像是居中方式吗? 对不对啊?就是中间的东西,我的举动方式,我载入的东西的举动方式,对吧?然后这个是选择的这是,这是一个 text for mate, 是指文本的格式化啊,这是大小 啊,那这里面有一个就有关系了,这个地方看到没有 scale 的 content, 中间是布偶类型哎,这里就感觉好像要设置是否大小可以实现,有没有感觉啊?之前好像没有设置这个,对不对啊? 我们先来看一看是不是这个啊?是不是这个影响的?我们先不看那个边框啊,因为刚刚看到这个函数的话,我们就好像有点感觉了啊,是不是这个原因,是不是没有让他允许改变他的大小,对吧?我们刚刚是不是有有那个改变他的大小啊? 好的,燕麦句是指什么呢?他的,呃呃 say 这是一个 scale 的是不是,哎,点 scale 的大写吧,哎,点不出来了哦 set, 呃,不是,呃。我们之前的那个 skill 的在哪里 啊?对尺寸啊,是那个尺寸是在那个啊 pm 里面啊,对吧? pix map 里面, 对吧?我想起来了啊,那么我们,呃继续继续看吧。哦这个里 pixnet 是不是又这个属性?我们来看一下 p pm 点 set 没有 啊,这个是指他的内容是否随着他的改变而改变啊,那么我们在这里面的话呢,就直接来设置一下他的 skill 那么这个 skill 的我们不管他啊,先设置成四百,成四百大于四百应该是挺大的。我们先来看一下效果效果有没有啊? 这一块来作为测试啊作为测试。嗯,那么我们应该是没有原来那个红的对翅膀支对翅膀遮住了对这里吧。啊老师你把那个注视一下,你会发现那个 啊是是有效果的。这个啊,这个观察非常细致入微吗?啊是有效果的啊,我们再来看一下注视一下这一条啊,观察非常入微啊,不是这个呢,因因为是加了这一条,加了这一条就是是否适应内容的改变而改变, 哎,就有点像是自适应在此是尺寸尺寸的自适应,这个就没了啊,那么这一条的意思就是就是一个尺寸的一个自适应,对吧,那么这一条我们这样子去搞其实是非常好的了,那么我们接下去的话呢,就是再来设置图片里面的这个尺寸 啊,那么他就会也会自适应,对吧?哎那这哎就这一条啊,所以我们这个给大家记下来啊,记下来也是自适应是非常重要的,那么设置 雷宝控件内容的自适应 设置啊, labor 空间内容的自适应,自适应方法是这个啊, set 这个这只为什么呢? q q 雷,不是吧? q 雷不累啊? q 雷不累, 意思大家明白啊,就意思有时候我这个地方我们寄的时候就寄一些,呃,我们以后写代码就是叫做会一些,叫做伪代码。什么叫做伪代码呢?把意思描述清楚了,但是代码是不对的,是不能被执行的,这个就是给你描述思想, 给你描述一个思想,这个叫伟大马啊,以后看到这个词大家要知道啊,伟大马, 那么我们继续来 skill 的啊,抗疼啊,这个其实比较好用,对吧?随着他的改变啊改变啊,我们 先来看那个边框啊,看看那个边框,那么我们边框肯定是要设置这个刚刚说到这个边框的这个话题,对吧?我们肯定要设置他的这个叫做 label 有没有。那么设置他的什么呢?我们再来看看他的有没有啊?有没有啊?看一下他的,再看下去。这些都是刚刚看到了 这个地方,对吧?那么这里面还有一条我待会给大家这个叫做 open x tree links, 非常有用。叫做什么呢?我们待会可以做一个链接,其实 啊,待会我会给大家来讲啊,那么我们在这个地方我们先来讲这个边框边框呃这里面的话呢?有哎, 发现有一个非常重要的一个要点,哎。丝带有丝带有好用啊啊?感觉好像是他的风格,对吧?那风格里面好像我们 css 里面是不是这样的啊?哎,其实除了这个之外的话呢,我们其实还有其他的啊,叫做还有没有呢? 嗯,这个叫做尤泽雷特啊,这个是这个是他的一个尺寸,这个是他的一个尺寸。哎,既有尺寸又有他的大小 啊,就又有他的位置,就那,哎,九米区,九米区,九米区,就是我们看到后面的这个地方,他有包含他的,你看 a x、 a a y, 对吧? 一个是他是这个就是他的一个坐标,窗体当中的坐标,横向、横向的位置和纵向的位置。 x 表示横向的位置 距离左边的距离,空间距离左窗体左侧的距离。 y 就是表示窗体距离上方的距离啊。然后后面的话呢, w 和 h 就是他的本身的宽度,一直 如果我们综合使用的话呢,用要用到这个啾咪曲啊这个方法,那么我们接下去再看到其他的啊,其他的这些优哥 data 什么都是设置一些其他的一些数据附加的数据啊,这个地方还有一个 设置他的属性方法啊,大哥,哎,这里面还有一个叫做 fix the size 啊,这是也是一个大小,对吧?固定他的大小啊,那么固定大小跟他的一些可变的大小又不一样啊,固定大小就他我们固定好,设置好之后他就一直不变, 就一直不变,一直这么大啊,就一直这么大。因为我们有时候我们像这种空间,我们在布局的时候,我们会,有时候我们窗体变大之后,我们会这个空间是不是也会变大, 所以我们这个时候我们通常会设置一个叫做最小大小,或者说是最大大小,这个时候某个空间会变的,我们图片虽然现在看到这么大,但我们现在因为是小窗体对不对?当我们窗体最大化的时候,有时候是不是看到这个图片也会变成变化, 也会变老啊,或者或者是他的位置都会变化,那么这个时候就叫做有点弹性,不,绝对不对,哎,这那么那么如果说你想要让他不变,一般来说就是设置他的 face 啊,就固定固定不变了,对吧? 我们再来看看其他的啊,有没有好玩的东西啊?在这里面搜索的 oppo 的内部就是他的一个名称。好,这里还有一个,看到没有, style shit 哎, style shit 是什么呢?哎,这里面我们发现它是一个 string 类型的, 是不是死菌类型的,哎,这个好玩了,我们可以直接在这里面写,哎 style 我没有想到是 css 对不对?我们好像可以在里面直接搞 css 啊,我们待会就可以搞他了啊,哎,给思路就给你打开了,对不对啊,我们嘛其实是可以的,只是给你装装着装演戏演了一步而已,哈哈哈哈。呃,那么我们来看一下啊 啊,这个地方设置他的最大大小,最小大小,对吧,然后呢还有其他的,我们要看到一些绘画绘制的时候的一些东西啊,他不来他等等,哎,对,设置他的图标啊什么的,我们我再看看有没有些好玩的啊, 我要顺便也做一个回顾,也可以设置他的背景什么的啊,那么我们现在就用一条,就相当于是写写这 这个 style shit 啊,这个 style shit 相当于什么呢?相当于是我们的保存一下变异一波 style shit 相当于是我们在写网页的时候行内样式 行的样式四句吗哎行的样式就嵌入到里面对吧就相当于是代码标签上直接写四代而不是写在 css 当然我们对我们也是可以采用用 css 的形式来直接写的啊在 qq 里面直接创建一个 css 文件好嘞哈哈哈哈是不敢想象啊哎然后呢 可以直接写四 s 把四 s 文件引入进来就可以了啊可以的啊我的那个工程的项目就这么做当然是有 一点点的区别的啊选择器有一点点有一点点区别。好我们现在来直接写这个 style shit 好那样式这个用起来比较简单对吧我直接来写啊好我们把这个边框叫什么边框 包的是不是包的直接写包的啊我们就啊一像素好不好爽不爽一像素啊呃一像素啊啊 sorry 的啊啊我说的吧哈哈哈哈好 唱什么我感叹号啊有个感叹号对吧感叹号不行这个说的什么东西 啊塞得低他这是在质疑质疑我的哈哈刚去掉币 啊啊变异变异通过了吧啊变异通过了是吧不敢质疑是吧这意思是我们来看看效果如何啊 哈哈哈哈。啊爽吗爽啊很爽吧啊那么是不是很好玩了啊很多东西很好玩但是呃大家呢可以回头可以去尝一下 qt 当中的 css 的用法啊 我现在可以告诉你是可以用的 css 用法跟我们网页当中的 cs 用法呢是稍微有一点区别就是有一些是不能用但是呢很多也是可以用的啊也是啊,也是可以用的。 好,那么我们既然已经看到他的边框了,那么我们可以确定他的一些大小啊什么的,对不对?我们现在来设置一下雷宝的一个大小,我们来看一下啊,雷宝应面具设 是大小赛斯吧,有没有赛斯 plus 啊,这个是大小策略 哎,也可以在单序腿里面搜到大小,对吧?这个是这是不是感觉也很有感觉啊,我们看一下啊,是否可以啊?继续写第二条 wid t h 啊,我们设置它为三百像素 啊,高度八百像素吧啊,我们来看一下是否可以跑起来啊,因为有一些是不能用的啊,有一些是可以用, 那么日常当中我们要记住一些常用的,对吧?哎,跑起来了,有吗?啊?没有变化啊,我重新重新来啊,会不会刚刚啊,说明是没有的, 对吧?这地方是没有的啊,那么我们这个地方的话呢,可能还要通过其他的大小来进行调整啊,我们这里面哎,或者是把这个改它改成 boss 看看,对吧,因为这是适应内容吗?对不对?我们来看一下啊 啊,发现没啥用,只不过内部的图片不会被自适应而已,对不对? 之前是内部的图片,图片是会内部的内容会被自适应的啊,那么这个应该是明确的,就是他的内部的内容要自适应他的这个雷博的大小,对吧,那么我们现在来调节一下这个雷博的大小啊,我们先把这一条先给删掉啊 先,哎,先把这条给删掉。 好,那么我们来设置他的大小 点 skill, 我们看到他的边框了,那我们就设置的时候至少心里有数了吗对不对?不会感觉这条带吗到底有用或没用至少看得出来了是吧。我们先看到设置一般都是 set set 的时候有没有好的东西呢可以给我玩的啊有吗 跟大小有关的有吗看一下哎。呃啊这个这个是有的对吧这个是不是有的这个是不是有这个设置他的大小现在捐布区还有他的一个位置了对不对啊我们再看看其他的有没有 其他的就是一个瑞四 s 其实啊其实就是一个瑞三或者直接设置 yswi h。 啊没有哈哈。啊没有没有啊没有就那个吧没有就用我们九妹曲吧 进位去啊我们就用它首先它的位置把它定啊把这个飞机往旁边的位置挪一挪啊比如说我们挪个呃一百像素 x 轴挪一百像素 y 轴挪一百像素啊就相当于又挪出来了对吧挪出来然后呢我们大小我们就三百三百 好我们来看一下 来有点慢啊来了吧来了来了吧挪了三百像素过来吧。啊那啊一旦你的空间有了之后的话呢他的窗体的大小也会随着你的空间的变化和变化 是不是窗体大小是不是变了你如果说想要窗体的大小随着我不要让他改变我改变怎么办?就是那就这个改成,哎设置好就可以了,再没 里面这是不是我们创写的大小啊或者说在这个泰式的在初始化的时候我们是不是有个初始化的一个构造函数啊 哎这就是哎这就是他的初始网购的函数啊我们设置他自己本身吗这是他的一个呃 set window 呃 window windows 也是一样的我们设置其实设置他本身这个窗体的居民群 啊或者是设置应该是啊我们就让他位置就默认好了。我们对九米区就是设置他的窗体的话呢就相对于电脑屏幕的我们顺着顺便用这个吧。好吧因为也可以看到电脑电脑屏幕的位置对吧 哎 set 啊就位曲啊这个东西很好用啊我们比如说让屏电脑屏幕左上角为零对不对啊就让他 置顶在屏幕的左上角啊屏幕的左上角呃然后呢他的大小我们就给他弄个六百吧六百这就应该比较大了对吧。好我们来看一下是否可以实现 ctrl 加啊 来了吧这个就是他认为的位置啊他认为的位置左上角接牌还其实还空开了一点对吧他其实还空开了一点点其实他他认为的应该是这样那么呃 你可以填个负责哈哈哈。啊那么这个啊负一百负十吧 往往左一点。哎这是我也走了我我也走了调了个我也走了对吧那他他也跟着改变了啊好了没了。呃我们把它直接这样关掉了关闭传奇 那么这个地方可能会跟他的这个妈卷啊拍的呀可能都有点关系大家回去自己去大家自己回去去调节一下都给他设置成零对不对?会怎么样?好那么现在我们来看我们这个飞机这个飞机 大小是不是也过来了然后内容是不是自适应自适应是不是随着你的呃雷博空间的大小而变化了这是不是我们要的效果有时候不需要让他自适应,那么我们就相当于是把自适应去掉把,再把它注视点就可以了, 注射掉我们再来看,那他就没有自适应了,对吧?所以我们只需要调节外面的,里面的,你如果说想要跟他一样的话就设置好自适应就行啊,那 px max 也不需要设置对吧?啊,当然 pix 还有更还有更多的功能啊。啊,我们因为它是一个内裤了。好,接下去这是一只飞机,已经有了啊,那么我们接下去的话呢?来 来制作一个链接,比如说我想要让他跳转到我的网站上,对啊,我做完一个软件,我要打个广告嘛,直录一下对不对?哎,大家 直录广告是不是这个思想啊?一开始的时候就可以当,哎,是商业价值对不对?让你的软件有更大的商业价值啊,那么这个时候如何来直录呢?啊?我们就做一个 哎,我们就我们就来做一个比较简单的一个啊,做在图片上是吧?对,嗯 啊,那我这个地方我就用到啊哈,那么我这个地方我就 用一下文字啊,就用用一下文字,那么我们就用听。好,我们就用第二种形式啊,第二种形式来创建我们的雷宝啊,这个之前我们用到的是一个雷宝,是用什么形式啊? 并非指针的形式对不对?现在我们用指针的形式来创建啊,也是刚好以以不同的用法啊,不同的用法。好,首先我们现在是用个 q 雷宝, l a b l e 雷宝,现在我们来创建指针。雷宝什么呢?文字啊,比如说是呃 d e s c 吧。描述啊,好 好,接下去我来把它实力画一波啊,实力画一波,我就写到, 呃,最后吧,啊,为了区分一点啊,就写到最后啊, ok, 那么我们现在,呃这个叫做文字图,文字列 链接啊,文字链接, ok, 我们怎么来?首先我们要把它实力画一波,扭一下,对不对?现在这一这一个动作是不是都会了? q l 啊?这个就是相当于是动态创建空间了,你这个这个 q l 的形式一会 会不会创建一百个空间?会不会啊?是不是下次我的这个表格当中我有十个空间,二十个空间一样的,我是不是直接溜一个就出来就行了?我要制作一个表格的,表格当中我要填空的,我是不是要把这个东西溜进去啊, 对不对?这这就是不是减减少你的工作量啊,对吧?而且你的命名也是非常有规律的,做一下就可以了,对不对?哎,那么这就根据你的自己的规律来了啊,然后接下去我们来描述一下他的, 这个时候我们就要 z 死了啊,这里面要写好就我们就不需要设置他的培养认可了,是不是啊?哎,那么我们此时设置他的文字赛特 tax 啊,赛特 tax, 那么赛克 tax 的时候我们是什么呢?我们就发现要设置设置一个, 比如说就一定变成吧,好吧啊?给自己打广告啊啊?我们,呃, ok, 那么我们发现这样的话呢,就是一个普通的文字,这就是跟我们之前的是一样的,看一下 应该在左上角吧,对吧?左上角这个普通的文字我们没有设置他的位置啊啊?普通的文字,那普通的文字肯定不行啊,我们刚刚看到一个叫做什么东西啊。叫做啊? set a link 对吧?有个什么 link x 啊,我们这个我有点忘记了。往下往下看一下啊。 set open extra links 对吧。我们让他开启叫做什么呢?链接模式啊,这是不是很强大?我们的这个 label 是不是很强大。 居然还能开启链接模式啊,那我就给他开启一个链接模式,结果出现了什么呢?啊只啥都没改变啊,只不过他可以有个链接模式。 哎现在我要告诉你的是又有一个好消息又来了啊,可以直接写 htm 代码哈哈哈哈哈这个是不是又是一个好消息啊,因此我们只需写 a 链接就行了。什么个意思呢?在文本当中直接写 a 链接啊, 爽不爽啊啊真不要脸啊。很很爽。好, hr ef 直接来了。好, http 编程创造城市点 com 看一下效果如何来。哎来看一下效果如何啊。 发现了什么?链接来了指针是不是都变了啊,我点击会不会变呢?点击浏览器会不会跳出来。哎呦 哎,广告也打的很好对不对啊很 ok 吧。啊 啊给人关关了。这个很厉害啊,看来你这是属于做流氓软件的料哈哈哈哈。啊好,那么商业价值大家也挖掘了。 那么这些功能那请你制作成类似于我的我的这种啊。那接下去其他的话呢?大家呢?呃教给大家课后自己来写好不好我我把相应的功能 以及我们要写的作业,作业就类似于这么一个,你把这个文字描述就植入你的广告就可以了 好不好。好啊哈那么我们今天的这个课程就到这里啊啊下课。

今天给大家分享一下地额区地铁离去的安装以及更改语言教程。额区这个地铁离去的版本有很多啊,然后我选择是这一款,因为这个有显体重文, 然后这个连接我会放在评论区,然后首先下载就正常下载了,然后下载完了之后呢, 他下载的是这样一个东西,然后你就点击这个右键,点击,点击装载,装载完了之后是一个单独的驱动器,像这种, 然后再点击这个塞纳, 就是用这个按键面,他有声音啊,点这个 把它关了,然后在这个界面,这个如果他标红的话,就说明你的硬盘空间不够,要给他留足够的硬盘空间。然后这个是你要把你的游戏所存放的位置 改一下,改到你想存放的位置,其他都不用动,然后点击安装,安装完成之后会, 这就是说安装完成之后的样子,然后 还要把这个文件的东西复制,复制,复制的文件就在这个里面,在这个驱动器里面把它全部复制,然后粘贴到这个 游戏文件里面替换掉,我这已经替换了,所以我就不再更改了。接下来呢是更改语言, 更改语言一定要在断网的情况下更改,就把 wifi 关了,把网线拔了,然后启动游戏, 然后进入游戏,一看是这样一个界面,首先点击最右侧这个,然后点击第二个, 然后啊把鼠标往下滑,会出现这个这个倒数第二个,然后更换这个地方, 这一串字母是简体中文,然后直接退出可以了,然后就可以正常的游玩了。

从 c 语言 c 提高到 c 加加 q t, 内容非常丰富,难度也逐渐加大。关于 q t 的学习,只要掌握一些 c c 加加的基础知识,自学 q t 不是难事。 我个人当初选择了很多教程,后来在网上看到了 qt creator 快速入门网页版,然后才购买了一本详细的学习书籍。这本书章节和历程设置很好,介绍也非常详细。 我的经验是,学习必须有目标,这样才能更快的掌握知识。首先按照书中基础部分的历程一步步敲代,不要直接复制粘贴。当遇到问题时不要慌张,因为每个错误都是成长的机会, 只有当你解决了问题,才能成为真正的工程师。如果只是把代码敲进去,一次编译通过,就 会错过很多学习机会。最后,我在视频结尾处总结了一些嵌入式资料,基础部分历程完成后,二地绘图也是必须掌握的,因为它与界面相关性最大。 此外,最好给自己或老板安排一个小程序,以实现一些功能为目标,去学习数据库、网络和多媒体等章节,这些内容比较深入,不建议只是讨好过一遍历程,而是以实现某些功能为前提,深入学习。 最近很多小伙伴找我说想要一些单片机学习资料,然后我根据自己同业实名经验,熬夜搞了几个通宵, 精心整理了一份单片机入门到高级教程加工具包,点个关注,全部无偿共享给大家。大家可以查看我的主页简介信息就可以拿走,你过来呀!

现在我们搞定啊, qt 到底是什么? qt 它是一个什么?它是一个跨平台的一个什么 c 加加图形的一个什么用户界面的,什么用户界面库,这个我们来搞清。 那么目前啊,这 q t 有 q t creator, 有 q t emble, 有 q t dj 呢等等这些快速的开发工具,就是目前 他包括什么呢?包括这个 qt coret, 那一般情况下啊,我告诉大家,我们用的比较多的就这个了, qt coret 啊,那除此以外还有哪个呢?还有这个 qt djna ok 啊,这等 等等啊等等,这一些什么呢?这一些快速啊开发工具,那我们理解这个问题之后,后面就好办了, 比如 q t linus 国际化的这个工具啊,那么 q t 还支持什么呢?注意 q t 这跨平台这个图形库,它能够什么呢?支持所有的一个是 linux, 还一个什么呢?还一个就是 unique s 等这一些相关操作系统。注意啊,同时他还什么呢?还支持我们的 windows, 对不对啊?还支持这个 windows 平台,所以不管在哪个平台,你只要把 qq 写好,那么编完之后到任何一个层下都可以咨询,这点大家 要明白就行了啊。那么 q t 它具有哪一些优势呢?我们要搞清楚 q t 的优点,它是这样的, 就是说它是一个跨平台的 c i 加这个图形的一个应用程序框架, 提供给我们这个应用程序开发建立一个什么呢?非常啊,专业化、艺术化的一个什么呢?图形用户所需要的功能,你比如 qt, 他很容易扩展,这是一个点,并且他允许什么呢?真正的这个组建编程 就是 q t r 套马线呢?跟 g d k 啊,还有 m, f, c 啊? k, d, e, o, w, l 其实还有 a, t, l 图形库是一样的,这个要注意啊,就这 q t r 哎, 整不出来是吧?啊? qtqt 他是什么呢? qt 他非常容易,什么呢?容易扩展,这个要知道,那么并且他允许什么呢?允许我们真正的这个组建编程, 对吧?嗯,那 q t 它跟哪个呢?它跟我们这个 g, t, k 是不是还有什么呢?还有 m, f, c 的框架温度是一样啊,还有什么呢? o, w, l 以及什么,以及这个 a, t, l 等等,他是一样的。这个什么图形界面库,就说我们拖空键就可以解决问题。