粉丝981获赞4590

哈喽大家好,我是清凉。这是一款功能强大的安卓四十投屏软件,可以让电脑通过 usb 数据线或者无线网络连接到安卓手机,不需弱的权限就可以让安卓手机在电脑上进行四次投屏。电脑反向控制手机, 手机需要开启两个功能,开发者模式和 usb 调试,不知道怎么开的可以去百度一下,这里就不做介绍了。 物理连接很简单,只用 usb 数据线在你电脑上接入安卓设备,选择充电即可,然后打开这个软件, 耳机弹出一个让你允许 usb 调试的窗口,点击确定就能在这里看到你的设备,直接双击或者启动服务就可以了。之后是无线连接,保证手机和电脑在同一个局域网。点击刷新列表,点击获取设备 ip, 就能看到手机 ip 已经自动填入。点击启动 adp, 点击无线连接就能看到另一个具有 ip 地址的设备,连接方法和 usb 连接一样,启动 adp 后就不需要 usb 保持安卓设备连接。 手机上安装烧烤输入法和 qq 输入法就能使用键盘打字了。幺九二零分辨率的手机比特率一般是六到八 mbps, 投屏以后是没有声音的,新版添加了音频功能,在连接状态下点击安装 sndcpy, 你的手机上就会出现 sndcpy 的应用,如果安装不上,在手机设置里打开 usb 安装, 安装成功以后最好是在没有播放音频的状态下点击开始音频,这样操作出问题的概率会低很多,不然容易出现软件异常的情况,需要卸载 sndcpy 重装 也可以使用第二个方法,不用自带的 sndspy 下载,安装 vioc 之后就不用管他了,用独立的 sndspy 项目包,直接双击 sndcpy 点别的,也就是 p 处理文件。如果出现 cmd 窗口闪退的情况,那就是安装 vip 的时候修改了路径, 可以重新安装 vlc 或者鼠标右键来成 dcpyp 处理文件编辑就利用记事本修改第三行 vlc 安装路径,然后 cmd 窗口这样显示就表示成功了。 脚本呢,可以直接在网上搜索,有写好的可以下载,也可以复制,最好用比较专业一点的查看器查看一下。比如这个格式有问题,都会有红色提醒,一般都是扫括号之类的,不然脚本有问题运行不了。将脚本格式改成阶层后缀, 放到 kmf 文件夹里。然后就是修改坐标,坐标点击会在软件上显示坐标参数,让显示的坐标改进脚本就好。 可以选择脚本应用,应用的时候也可以看到脚本格式有没有问题,没问题的话回到头屏,按 esc 下面的波浪键 启动和关闭脚本,可以边改边试,有兴趣的小伙伴可以研究一下。那以上就是本期分享的全部内容,需要软件或者脚本的小伙伴可以在公众号回复日期获取。

大家好,用电脑操作手机吃鸡,这是一种怎样的体验呢?用鼠标代替手势,简直就是物理挂。今天介绍一款神器 q t skirk p q t skirk p 是一款在 skirk p 的基础上新增功能的安卓手机投屏工具, 可以通过 usb 连接到电脑,把手机屏幕投影到电脑。电脑操作手机,它开源免费,不需要 root 特权, 不需要在手机安装任何。 a p p 支持三个主要平台, linux、 windows 和 micros。 支持多点触控,有中文图形界面,可以自定义按键映射,大家说牛不牛? nice, 好了,说了这么多,简单介绍怎么使用。首先手机需要开启隐藏的开发者选项,如果是第一次操作,进入到设置 菜单后,在关于手机中找到版本号,连续点击,就可以让安卓系统呈现开发者选项了。使用 usb 线连接电脑,打开手机的开发者模式,打开 usb 调试,打开允许模拟点击即可 把下载的压缩包解压。双击 qt skirt p xe, 点击刷新设备列表,会出现你的手机序列号,如污出现,检查是否打开了开发者模式和 usb 调试,出现设备序列号,点击启动服务即可。这样就很方便的把手机投屏到电脑了, 其他什么的收费软件都弱爆了。除此之外,还有其他功能,比如屏幕录像。将 apk 拖放到视频窗口中进行安装,将文件拖到视频窗口,将文件发送到安卓设备。 如果需要玩手机游戏,我们可以通过自定义脚本来控制。好了,以上就是今天的分享了,下期再分享怎么自定义脚本,如果对你有所帮助,别忘了一键三连,我把分享放在评论区,有需要的自取。


好,我们来看一个例子,自定义的信号和潮,这是一个控制台程序,我们自定义了两个类型,一个是发送者,一个是接收者。声明,两个对象通过发送者 调用了他的一个成员函数,这个成员函数实际上就是把其中的一个变量进行了一个加加处理,默认值是十,加完以后应该是十一。 具体代码呢?后面有,但这个时候我们还没有尽力建立连接,所以我们的 slot 并不会收到消息, 我们会在 stalt 里面进行打印,所以我们不会看到任何的输出。这条以后只是内部的值,也就是在我们发送者对象里面,他有个 同时变成了十一而已。好,建立了连接,我们再调用相同的代码的时候,那我们的斯拉特就会被调用了,对吧?所以在界面上你会看见输出有十二和十三, 因为这个值变成了十二和十三,并且我们在 slot 里面进行了输出, 然后我们进行了 disconnect, 这个时候我们再调用这行代码的时候,虽然里面的值变成了十四,但是并不会进行输出,输出的只有这两个。 好,我们再看一下这两个类,这两个类都很简单,作为 signal 方,也就是发送方是要有严格的规定的,是一个 q abject, 需要有 q abject, 红 红需要写 signal, 这样呢,我们的 mark 机制才会发发挥作用,会帮你生成一些相应的代码,然后不能有反馈词,这里面写了不能有反馈词,可以有参数,参数可以传到我们 slot 的参数里面,而且不需要实现 他,我们没有提供任何实现,只有一个声明,这样是可以的,因为我只需要通过你发送出去。那真的是不需要定义吗?只有声明可以吗?不符合谁家的语法呀?猫可会帮我们去提供这一部分内容, 但对于我们使用者来说,就好像不需要一样,我们只需要写一个 incremental。 应该是这样的缩写啊,就是增加年龄, 把里面的值从十进行一个加加,然后呢,调用我们的信号,所以这个函数主要就是用来触发信号的。那下面呢,是 resever, 我们这里只给了一个声明啊,实际上是有时限的,那我们待会会自己来敲一遍它。同样需要是一个 q project, 但是没有 q。 我家的这个红也没有写 slot, 这里写上面写的新功能。本来呢是可以写呃 slot 的,但是我们要用 成员指针的方式,所以可以不写,当然也可以写啊,其实我们还是推荐写上的好, 大概流程就是这样啊,我们大概了解一下。我们来实现 创建一个控制台程序,我们起名字 chapter r。 这个呢,写 costumer tempers。 这个呢, 好,创建完以后,我们需要添加两个新的类, 右击这个狼头的地方,选择 at new, c 加加 class, 选择一个鸡肋 q project, 他会勾选这两项,然后我们先敲入, 因为是类的名称,所以首字母最好大写,这是一个呃,不一定俗称的规则。 好,一路点下去就好。他会给你个提示,在剪切板里面,是不是要把我们新加入的文件拷贝下来?拷贝了以后我们会自动跳转到这个地方,也就是 c maker 好点,确定 点 ctrls 保存,我们就发现文件列表里面就增加了这两项,一个是点 h 文件,一个点 cpb 文件。我们可以直接在这里面双击,也可以按住 ctrl 去 进行点击,在这里点,比如说点到深得点下去也可以进来,好,和我们双击是一样的,那么我们 就基于这里面把我们的 signal 写进来,包括我们的这个 private 的 h, 那么直接烤进来好了,在这里那把这三个都烤进来, 这样可以加快我们的速度。比较简单的,这个地方 ctrlacctv age change 的,他是一个 signals, 所以不需要实现, mark 会帮我们实现,但是 inch age 是需要我们自己实现的。有吉他 re factor, 可以选择 at the definition in c papa 文件。好,这样我们就可以直接跳到 c 加加文件里面,并且给我们写好了一个定义,那这里面我们要做的是 其实很简单,对吧?我们只需要去增加这个值,给它进行一个加加啊,也不需要关掉啊。再来 心心佳佳,以后呢,我们再发出信号,我们的信号名称是这个 ag 选举的,然后把 mh 当做参数发出去,这样 slot 呢,就可以通过参数接收到这个字, 直接这样是函数吊用,但是我们要是把它发送出去,所以前面要写个伊米特,就是发送这个函数,而不是阔的个函数。好,上面是相应的构造函数。那这个地方 呢,是 c 家家于发里面啊,比较新的和 c 家家十一以后规定的啊,也不新了,也很老了。 如果你用括号可以吗?也可以啊,括号呢就比较宽松一点,如果需要内心转换,他只要能够转换也可以,但是如果你写成这样,他就要求就严格一点,必须。呃,是是完完美匹配的, ok。 对于 c 功能来说,我们要做的就是这些,那么我们加点这个图文键,我们自己写的图文键啊,我们还是用引号的方式就可以了。 standard, 实际上我们是不需要这个循环的, 对吧?我们现在并没有用 ui, 也没有用其他的事件,我们只是自己去调用相应的函数,所以这两行都可以删掉。好,那么我们就可以通过他去创建,通过 cend 去创建一个 cender 对象。 cinderope 如果你现在执行肯定是没有任何的影响,没有任何效果。我们可以先去让他调用一个 obg, 调用它的成员函数,这个成员函数呢,它的作用是增加里面的值,那现在里面的值会变成十一,但是在界面上应该是没有任何显示的。那我们现在运行一下,在 pk 选里面,我们是 好没有任何输出程序就退出了,对吧?那现在我们来写一个新的 还是右击这个小狼头爱的 new, 一个新的泪。这个呢,我们叫 resever, 也是首字母大写 reseve。 好像写错了, re 飞吻好,也是一个 cube jack, 但这两个我们可以不要,对吧?其实最好。那作为一个好的习惯呢,我们就留他好了,只是告诉你其实是不需要的。 好,同样他会自动帮忙放到剪切板里面,而且会跳转到审美可里面。 点 ctrls, 我们可以直接双击,也可以点住 ctrl 去选择一个文件。啊,点这里进来了。 这个呢,我们不需要,以前呢,我们都会去写帕布里克 solo 词可以这样写啊,我们把 solo 字写在这里, 但实际上呢,不写也没有关系好,我们只需要点跟他的这个签名,基本一次就可以, 也是没有返回直,就用它就 ok 啊,我们把这个拿过来,其实我们写成这样就可以了,并不需要加上。我们刚才写的啊,因为我们并没有用红 好放在这里,你加上呢也无害。前面讲过, slot 其实就是普通函数,所以你不能像 cgo 一样不给他实现吧,所以还是要实现的好,我们把它脱下一点啊,看不见了, 往下一点,还是通过 refect, 这里面 add the definition in spa pass, ok, 然后点击保存,那这里面呢,我们就直接通过第八个好了。 q, 第八个我们进行一个输出, 我们把 a 举直接打印出来,我们可以写上 a 举的字啊,然后 a 举,那 发现呢,没有用,没有用是因为没有图文件,所以我们增加一个图文键, okay, 那么我们在面里面,我们也同样要导入 include receiver, 然后呢,我们也创建一个 receiver 的对象, receiver 就叫 receiver objective。 好,既然有了这个对象,我们就可以写 connect 了。 connect, 他是 q abject 里面的一个静态函数,他是有很多个同态版本 等的,我们先把它写出来。 q, oppo director, 然后 connector。 好,都是指针,所以我们三的要不加特的地址,也就是指针,然后呢,他的成员,那么类型 是函数成员的一个指针啊,指针,指针指向的是我们类里面的成员函数成员函数指针,我们这里面要绑定的 signal 是 ag change 的, 然后可以不写参数,那么我们 我们的接收方呢? 现在应该没问题啊,因为我们现在用的这种指针的方式, 成员喊出指针,他会帮我们去检查有没有写错啊,很明显他没有给任何提示,就代表我们现在的代码写的应该是没有问题。好,我们再去进行两次操作 啊,一次两次,那这个词本来是十一,十二,十三,但十一不会打印对吧?因为我们的吕 sir 这个时候并 没有被吊用好,现在已经建立了连接以后,那我们再抛下看一下,应该能看到十二和十三, 这里面还正在编译好,这时我们看见了十二和十三,那现在呢,我们可以 disconnect 他,我们给他关掉, 然后呢,我们再运行一次 十三,应该里面的值就变成十四了吧,对于三的这个对象里面维护的这个值会变成十四,但是因为我们已经断开链接了,所以他不会被吊用,不会被吊用呢,也就不会打印出来, 所以我们看到的结果应该和以前一样,还是打印的是十二和十三,我们看一下,依然是十二和十三,十四并没有打印出来,那除了 disconnect, 我们如果不去写他, 而是去销毁你 c 位呢?我们前面说了, qt 会帮我们自动的去实现,我们直接调用它的虚构函数 silver palm 试一试,看看这样是不是也可以, 应该还是只会打印这两条啊。十二十三, 虽然我们已经吸够了, 并没有程序崩溃,就代表没有被调用。

哈喽,各位小伙伴大家好,我是冥王,本节课呢,我们接着讲解 qt 中绘图的最后一节。好,这是我们本章的最后一节了,本节课呢,我们主要是给大家引出来一个啊, qt 的开发专题啊,我们就是引出来这么一个 qt 的开发专题,叫自定义空间。好,这个 qt 开发专题呢,我在后面呢会专门出一个专题 给大家讲解制定的空间,把我工作中用到的所有的啊制定空间都拿出来给大家讲解。好,我们可以看到这个界面啊,现在这个, 哎,这就是现在运行的这个截图,对吧?哎,我们完成了一个仪表盘,我们制定空间呢,我们完成了这么一个仪表盘的一个绘制,对吧?我们可以看到呢,这个仪表盘呢可以有多种的样式,对吧? 好,我们可以看到,哎,这个刻度呢,可以在这个圆环的内侧,对吧?啊,当然呢,刻度呢还可以在圆环的外侧,我们可以看到。好,刻度在圆环的外侧,当然呢,这个刻度呢在圆环的外侧还可以呢,哎,这个刻度和圆环之 中间呢?哎,有一个空隙,哎,这有有一个空隙,对吧?但是呢也可以没有空隙,这个刻度呢直接画在这个圆盘上,对吧?包括这个指针,我们看到,哎,这个指针的样式呢?哎,这个是尖的,对吧?哎,这是圆的,对吧?包括圆,这些样式都可以修改,包括什么?圆环的颜色, 对吧?包括什么啊?刻度的颜色,圆环的颜色,刻度的颜色包括这个刻度值的颜色,哎,包括这个啊,指针这中间那个指针的颜色,对吧?好,当然呢, 这些都是可以修改的,当然呢,这个刻度值肯定,对吧?这个范围零到一百,或者说什么,哎,零到五百这些肯定都是可以自定义的,对吧?我们我们写的这个自定义空间已经很完善了,大家拿过去可以直接用了 啊,这么一个程度啊,现在已经达到了啊,好,包括这个指针,哎,我们看这是什么?是一个直角,对吧?但是呢, 我们还可以设置成圆的,对吧?这些呢都可以进行一个自定义。好,我们再看另一个截图啊,哎,这是这是他的第二个截图啊,我们把这个盖上, 我们看到,哎,这个呢在右侧呢,右侧呢,哎,这所有的东西呢,我都可以进行一个修改,对吧?好,待会呢我们再详细的介绍啊,现在呢,我们先我们就先看一下我们的笔记啊,好,我们可以把这个呢,哎,截个图,对吧? 好,截个图呢,我们把它给放在这,对吧?好,然后呢我们看一下我们的笔记啊,好 啊,本节是最后的绘图的完结和后续了,我们主要是引出这个专题,自定义空间,对吧?好,我们首先看一下我们为什么,为什么需要自定义空间,对吧?而我系统不是已经提供了很多空间了吗?为什么我们还需要自定义呢?因为呢, qt 本身提供的一些空间 他是有限的,对吧?并且他提供了一些控件,很可能不满足我们的需要,包括啊,系统提供了一些控件的一些样式,包括他的一些功能,肯定都是有限的,对吧?我而我们的实际的应用呢,是千奇百怪的,对吧?每个人都有可能有他自己非常特殊的啊,非常 那个个需求,对吧?这个时候呢我们就需要自定义空间,好,自定义空间呢会使我们的界面呢美观的多了,多啊。好,你比如下边这两个,哎,这两个自定义空间呢,我们就是在啊百度图库,哎,在百度里面我们直接搜索的两个图片,对吧?好,我们可以看到呢,哎,这两个图片呢 啊,实现的效果呢?反正大差不差,对吧?哎,中间一个圆环,对吧?中间一个圆环,然后加上刻度再加上指针,对吧?当然呢还可以显示一个字,显示那个值,对吧?好啊,其实其实,呃实现的效果呢,基本上都差不多,我们看到我们这个效果呢肯定,呃他这个效果, 我们我们这个肯定都已经实现了啊。好,所以呢我们实现这两个效果,哎,刚才已经这个图已经看到这两个图已经看到了,对吧?待会呢我们再具体再看啊。啊?你比如,哎这个刻度呢?哎,可以在圆环的内侧,对吧?哎,这刻度在圆环的内侧,当然呢刻度呢还可以啊,在圆环的外侧,对吧?当然呢刻度在圆环的外侧, 这呢?哎,中间还可以有缝隙,对吧?哎,这还有缝隙,对吧?好,这样你可以根据你的需要进行一个修改,当然这个指针呢也可以修改的,对吧?好,这个制定空间呢它包括了很多的 啊技术点,对吧?你制定一个空间呢,你绘图里面所有的基础,你像我们之前绘图所有的基础的东西我们都讲完了,对吧?我们这个制定空间呢,只要你把我前面讲的绘图的基础的东西讲完,这个制定空间呢,你也可以完全自己可以做出来,是肯定没有问题的。好,你比如说,哎,首先呢,我们要啊定一个类,对吧? 哎,继承是 qvt 的,并做类的提升,对吧?之前我们讲过了,对吧?包括这个圆环,哎,这个圆环呢?哎,怎么绘制这个圆环呢?哎,这个圆环的宽度怎么进行 设置?还包括圆环的颜色,包括圆环末端的一个样式,当然还有刻度,对吧?哎,怎么绘制这个刻度?哎,刻度的颜色包括刻度的位置,我们刚才看刻度可以在圆环的内侧呀, 还可以在圆环的外侧呀,当然还可以有个空隙,对吧?包括指针,指针呢,可以设置它的颜色,包括指针的样式,对吧?好,样式呢?哎,圆形呢还是尖形呢?我们刚才看到了,对吧?哎,当然指针还可以有个动画,对吧?哎, 待会我们可以看到,但是呢还有一些基础的设置,对吧?哎,你是要显示啊,你什么叫基础的设置呢?我们可以看一下。哎,你是要显示他的电压呢,还是要显示电流呢?还是要显示温度呢?哎,这都可以通过代码进行进一个设置的啊,好,这个是都可以进行一个设置的啊,当然包括颜色, 我们现在的颜色是白色的,对吧?后边肯定都可以修改的。好,包括空间的技能,待会我们就可以看到。好,我们刚才说了,我们后续肯定有一个计划,我们会推出一个专题叫 qt 的开发专题,叫自定义空间。好,这个自定义空间呢,我 大概可能会有几十个制定的空间,我工作中常用的我都会拿出来给大家进行讲解。好,这个仪表盘呢就是我们这个专题的第一个空间,啊啊 啊,大家持续的关注,我们后边会很快就会推出这么一个专题啊,我们可现在呢,刚才这个我们把这个截图呢,我们就关掉了,好,这个实现的效果呢,我们可以看到,哎,我们 我们如果进行一个放大和一个缩小呢?他也是会啊,自适应的进行一个放大和缩小的,对吧?我们可以看到,哎,可以啊,自适应的放大缩小,你如果做不到自适应,那你这个在实际的项目工程中其实是没没什么应用的价值,对吧?所以呢我们这个肯定是可以啊, 自适应的,对吧?好,好,这个是呢,是我们,哎,呃,写死的几个写死的几个样式给大家进行的一个展示,对吧?好,接下来呢我们看一下,哎,我们还会给大家提供一个什么哎,通过我们代码进行一个设置,对吧?通过界面,你比如现在, 你比如现在他下边有个拖动框,我可以拖动,我们可以的看到,哎,这个电压正在变化,对吧?哎,现在呢显示了电压,哎,一百,对吧?当然呢 可以基础的设置,什么叫基础的设置?零到一百,对吧?你比如这呢我设成五百,哎,我们可以看到这个的范围的值呢,就变成了一个五百,对吧?好啊,当然呢,我这是显示的什么 是显示了电压,对吧?但是呢你这是不是还可以显示什么湿度湿度呢?通常我们这直接显示个百分号,对吧?哎,这我们比如我们这就显示个湿度,对吧?啊,但是呢湿度呢?这呢肯定是一百了,对吧?哎,湿度,哎,现在百分之零,对吧?哎, 湿度啊,也可以改改成百分之四十三,对吧?但是都可以进行修改的,但是呢这个颜色也可以修改,我们看到这的颜色现在是什么?是黑色的,对吧?但是呢这个颜色我可以修改,比如改成红色,我点确定,哎,这就变成了红色的,对吧?也就说我们那个制定空间做的很完善了,都可以进行修改,包括背景,我们可以给这个空间呢增加一个背景, 背景呢,我可以选择一个颜色,对吧?你比如背景呢,我可以选择一个蓝色啊,别选蓝色了,因为他这个本身是蓝色,对吧?啊,这个背景呢,我可以选择一个粉色吧,哎,我们可以看到这个空间呢, 当然这个可以拖动啊,我们可以看到这个空间呢,背景呢就设置为了一个粉色,对吧?但是呢通常的这个这个空间的这个背景我们不设置的啊,我们可以,我们可以把这个空间放到一个布局里面,直接设置布局就可以了。好,我把这个我这个背景啊我给它去掉了,当还可以设置一个技能,我们点击一下,哎, 技能的时候呢,我们可以设置一下它的颜色啊,比如设置成灰色的吧, 哎,现在呢,我们可以看到现在这个空间变成灰色的,就是他不可用了,对吧?哎,这个技能什么时候我们会用到这个技能呢?我们可以看到我们的笔记啊,我们这在笔记里面。好,这个笔记里呢,我就讲解这个技能好技能呢可以设置各个部分的颜色,通常我们设置成灰色,对吧?因为我就不可用吗?我们通常设置灰色,为什么会有技能那种状态呢? 啊?通常一个一个仪表盘呢,我们对应一个设备,对吧?你比如这,我这个第一个仪表盘呢?我测温度,对吧?第二表盘呢?我, 我测他的思路。第三个仪表盘呢,我测试他,测试他的电流,对吧?一个仪表盘呢,对应一个设备,如果这个设备不在线的时候呢,我们就可以把这个设件控件呢设置为技能。好,因为设备不在线,是在在我们的工业控制里面挺常用的,对吧?哎,这个设备我断电了, 对吧?好,这个设备不在线呢,我设置为技能,那么我把它设置为灰,设置为灰色,如果这个设备在线的话,哎,我就把它设置回,啊,哎,他一个自定的一个颜色,对吧?啊?表示他在线,对吧?这样就用户一看就很直观了。这个设备在线不在线,对吧?好, 当然呢,我们这个圆环的宽度,哎,我们看到现在的十,对吧?当然呢,这个圆环的宽度也可以进行设置,你比如说,哎,我现在改成十五,我现在改成五,我们可以看到我按鼠标的滚轮的时候,哎,这个圆环的宽度呢,也是可以进行一个变化的,对吧?当然呢,圆环的颜色,现在圆环是什么颜色?是一个蓝色,对吧?哎,我现在可以改一下, 我改,我改成一个,比如我改成一个粉色的吧,哎,我看圆环的颜色也可以进行一个修改,但是呢圆环的这个角度也可以修改,也就这,你看现在是一个,是一个直角九十度,对吧?哎,我可以改成一个圆的,哎,我们看到现在呢他就是一个圆的比较漂亮, 对吧?当然你可以根据你自己的喜好进行一个设置,对吧?好,留这我可以再给他改过来,对吧?当然呢这个刻度的颜色呢也可以进行一个修改,你比如现在刻度是绿色的,对吧?好,我这呢把刻度呢给他改成一个蓝色, 哎,我们可以看到这个刻蓝色也进行了一个变化,对吧?好,当然呢这个刻度的位置呢也可以进行修改,我现在这个刻度呢是在圆环的内侧,对吧?好,我可以改成圆环的外侧,我们可以看到呢, 这个刻度呢是不是就绘制在圆环的外侧了,对吧?啊,这个刻度呢是直接绘制在圆环上的,对吧?当然呢我们还可以让这个刻度线呢和这个圆环呢有一个空隙,可能美观一点,对吧?哎,我们可以选择这个圆环外侧空隙,哎,我们可以看到现在呢他们之间呢就有这么一个空隙了,可能这样呢 就相对比较美观一点啊,当然你可以根据你自己的需要进行一个设置啊。好,我们可以,嗯,我们比如还改成到内 侧里面,对吧?我们改成外侧吧。好,当然还有指针,对吧?我们指针呢现在我们可以看到,哎,指针的颜色现在是一个绿色的,对吧?哎,我可以给他修改,你比如指针的颜色呢?嗯,我改成一个, 我们看改成一个红色的吧,就就红色吧,哎,现在这个指针变成一个红色,对吧?但是呢,哎,我移动的时候,哎,这个指针也可以移动,对吧?我们看到,哎,指针都可以移动的,对吧? 根据你实际测出来的啊,你的设备的那个啊值对进行一个修改,对吧?好,当然呢,这个指针呢,我们看到他现在这是一个尖的,对吧?当然呢,我也可以给他给他改成圆的,哎,圆形,哎,我们看到这个指针呢,这呢就变成了一个圆的,对吧?哎,我可以,当然拖动也是没有问题的,对吧? 那指针我们可以看啊,现在我们拖动他的话,这个指针呢一下子就跳转到他那个目标指针上了,对吧?我点一下一下就跳过来了,就比较突兀,对吧?但是呢,我可以加上动画,我们可以看到这呢,我们可以 给他设置一个动画,设置动画的时候我再点进去看,哎,他就一个慢慢的过度到那个值,对吧?哎,这样呢,有一个过度的效果就显得不那么突兀,这样呢效果呢会比较好看一点,对吧?好, 这我们本节课啊给大家讲解的,给大家引出的这个 qt 开发专题自定义空间,好,我在后面讲解我自定义空间的专题的时候呢,我都怎么样实现这么两个效果? 就是第一个呢,我们看到我会给大家呃弄写两个 demo, 第一个呢,我们看到首先第一个我会像上面像这个一样, 你就说我首先会把样式呢非常直观的给大家展示出来,对吧?哎,我们看到这个样式呢,很直观的,大家一看啊,有这么有这么几种样式,对吧?哎,都可以给大家展示出来,然后接,嗯啊,第二给大家实现了第二个呆萌, 就是每一个空间都会实现两个带帽,第二带帽呢会把它里面所有可设置的项呢都会,哎,用代码给大家进行实现,所有可设置的项呢,哎,我都会哎,这样呢,给大家实现出来,对吧?这样呢,大家一看,哎就知道啊,他有哪些设置的选项,一看就会明白了,对吧?然后呢? 嗯,大家,当然呢,我们给大家实现了自定义空间,最主要的大家是要怎么样应用到项目里面,对吧?怎么应用到项目里面呢?应用到项目里面直接,我每一个自定义空间呢,都是对应一个啊,点 c p p 文件和一个点 h 文件,只要大家呢把这两个文件拷贝到你的项目里面,直接就可以拿来用,就是完全和你的 和你的其他的项目的代码是完全就解五和的,就说我们做的,我们既然要做一个制定空间呢,我们肯定要做出来一个完全独立的,对吧?你不能说我, 我移到你的项目,我还要改你项目本身的代码,这肯定是不合适了,对吧?就说我们这个空间拿过去之后你可以直接用,对吧?你就你参照我们的代码直接就可以用起来,就是拿过来拿过来之后,我三分钟之三分钟之内,哎,我就可以在我的项目里面能用起来,这是我们要啊讲解这个 啊, qt 自定义空间的一个一个最基本的一个需求啊。好,本节课呢,我们主要是给大家引出这个 qt 啊,这个开发的这个专辑,好, 我,我刚才说了我们后续的计划会推出这么一个专题啊,好,本节课呢,就是我们绘图的这个啊,最后一讲啊, 啊,当然呢,可以给大家做一个小小的啊,小小的预告啊,我,我最近呢可能会,嗯给朋友做一个项目,他这个项目呢就是,呃,是工厂里面,监测工厂里面的设备,他这个设备呢非常的多啊,监测工 厂里面的设备啊,可其中呢可能会用到一些啊, modelbox、 tcp 啊,一些相关的啊,一些相关的通信和设备的一些通信可能还会和第三方的一个啊,有和第三方的一些软件的一些通信。好啊,最近呢我可能会给大家呃给 给客户呢做这么一个项目,所以呢我们的课程呢,可能会暂时的呢,可能会,嗯,暂停一下录制,等我把这个项目做完之后呢,我们再进行后面的讲解,包括我做完这个项目呢,我争取把这个项目呢,这个实际的项目呢,也做成一个一个大的项目来 来给大家进行讲解,让大家真正的呃在实际的项目中来提高自己的编程的一些 q t 开发的一些技能啊,就说我们的项目呢,肯定都是真正的,真正的我做的一些项目,真正的工作中用到的一项一些项目并不像一些其他 一些所谓的一些什么啊,网上有些项目啊,比如说什么图书管理系统,什么图书馆管理系统,什么学什么学生管理系统,这都纯粹的就是一些呆某,对吧?就是一些很简单的一些小项目,就说你真正的出去工作,出去工作的话,你肯定都 怎么说白了其实这根本就拿不出手,对吧?你说我做一个图书馆管理项目,图书馆管理系统,别人一看就是一个一个学生级的项目,一个戴帽级的项目,别人 你如果说,哎,我真正的工作中的项目,我拿出来各种各种通信啊,各种第三方的一些交互呀,啊,各种 啊,各种的一些协议啊,对吧,人家面试官一看啊,这肯定是一个实际的项目哎,你别人肯定就是瞬间就觉得,哎,这个这个小伙子肯定有一定的开发的一些技能,对吧,有些实际的经验,对吧?啊,所以呢,后边呢这些东西我啊我争取都会给 大家进行一些讲解啊。好,当然呢,我现在个人呢时间也有限啊大家,嗯,就敬请期待吧,我后我后边我争取,我争取尽快的给大家录制好本节课呢,我们就呃给大家讲解到这。好,如果大家觉得我们的课程对家学习有帮助呀,也希望大家呃 关注加三连支持一下。好,谢谢大家,我们本节课就给大家讲解到这,谢谢大家。

使用样式表自定义界面。 qt 的样式表与 html 的 css 类似,是纯文本的格式,可以在运行的时候加载,然后改变界面的风格。我们可以在代码里面加载一个文件,以 q fire 的形式, 以指读方式打开它,把它转换成 q string 的字不串。然后呢,通过 satisfaction 去改变我们整个应用的风格,如果这里面写的是某个窗口,那改变的就是某个窗口的风格。我们可以把上节课的例子 做一些修改,像这样把底色变成黑色,上面呢颜色变成白色,文字的颜色,变框的颜色。按钮,我们给一个弧度, 也就四个角的位置,然后改变一下相应的颜色, 我们看看里面的代码怎么写。也就是在我们指定的文件里面,首先要有一个选择器,我下面的这些属性,这是属性,后面是直,这些属性和直他应用的范围是什么呢?是 q vjt, 只要 是和 q which 的相关的,它的子类也可以,那么都会应用下面的 括号花括号表示样式,应用于 q wechat。 关于选择器,下面还有很多说明,如果我们用的是新号,就代表所有组建。如果像我们这样给的是一个类的名称呢, 就是他以及相应的纸类,我们还可以指定属性,只有在这样的属性下面才会被影响。如果我们不希望影响纸类呢?那我们前面就加个点,这就是啊,不包含这些,错了,不包含纸类, 我们也可以针对个别的实体,个别的对象,比如说名字叫做八成 ok 的才会被影响。 我们还可以设置重组关系,像这样只有是 q deal 个里面的 q push 吧疼才会被影响,也可以是子对象的关系,也就是必须是子对象,孙子不行,对吧?必须是直接从属于 q 大佬个的 q, 不去抱怨,实力才会受到影响。好,我们现在在上一节课的基础上来改一改,这是我们上一节课的代码,我们可以先跑起来看一下, 是这样的,对吧?那我们来改一改。首先我们需要一个这样的文件,那么我们走到 projects around, 在这里,我们打开这个目录, 打开目录呢,我们声明一个,也就是创建一个,创建一个文本就好了啊,取名字就叫 mi, 他要点这后置也无所谓啊,叫 qsss 也可以,无所谓啊,叫 csc 也可以,或者起别的名字也无所谓。 总之我需要里面的内容。然后呢,我们可以用一个编辑棋牌打开,那现在里面什么都没有,对吧?那么我们给他一段,比如说就上面这个, 上面这个是改变了背景颜色,这是属性,背景颜色的属性设成,后面的零零零是黑色,二五五,二五二五五是白色,这很明显就比较偏黑。 看了呢,就上面的颜色,像我们的边框的颜色,文字的颜色是 rgb 的,接近二五五,也就是比较白。像我们这样字体选用轻松,题大小是十二, 这是关于放特,也是字体属性的值。好,我们把这一部分考进去, 烤到我们刚刚新建的这里来就好了。 用 notepad 一定要记住要按 ctrls, 因为它不会自动保存的,也经常容易忘。 ok, 那么我们把这些代码也放进来,一定要放在袖的上面,如果你放在下面呢,我们可以试一下,也可以,但是看上去就比较奇怪,这个效果,它会先显示出原有的效果,然后呢再加载相应的这个效果。 好,我们加上图文键,加在上面,可以 include q file, 我们可以先试一下, 他会先显示,然后闪了一下,对吧?刚才闪了一下,再变成我们想要的这个样子,好,点击退出,所以呢,为了好看一点,应该是把它放在下面, 这样就不会先把原有的样子闪一下了,我们再点康秋啊,运行一下,加载了这个文件,解析,它变成字不串,用这个字不串 设置样式,对吧?我们也可以只改变某一个窗口,那我们这里就一个窗口,所以这里用 w 和用 a, 整个应用效果是一样的。好,我们来看一下,这用 w 也可以,对吧? 我们还可以设置指控键,比如说视频 box。 什么是视频 box 啊? 就是我们可以通过上下箭头去改变里面直的,比如说默认是零,然后呢,这有两个箭头,一个是往上,一个往下,对吧?那我要替换这两个按钮呢,用图片的方式。 好,我们也可以来试一下。把这个加上去吗?我们现在在哪里?不是没有他吗?那我们加上去, 我们可以回顾一下我们的课程啊,我们都是放在位置的这个类里面。那现在呢?我现在需要新加一个空键啊,把他的图文键放过来,加在哪里其实都可以啊,无所谓,我们就写在写在这里好了。创建一个 bean box, a new new 他,然后给他一个 parent, 然后呢,我们可以用 green the frame 去把它加上,对吧? add a wechat, 把它加上 bean box。 好,我们现在先这样跑起来看一下, 那在这里面应该就多了一个这个,那 speaking box 里面呢,还包含一些其他内容,我们现在暂时可以忽略。 好,那么我们有了这样的一个 speaking box, 我们如何去改变这两个按钮呢?这两个按钮看着 好像不是很美观的样子,那我们需要我们的美工提供两个好看的图片给我们。好,我这里准备了一些图片,我们用图片的时候最好还是用 qt 的资源管理,然后我们在这里面爱的 new 选 qt, 以前我们都是选 c 佳佳或者是其他的,对吧?我们这里选 qtqt, 这里 qt resource file 资源文件,我们可以起个名字就叫做 resource, 然后一步步点下去, 我们直接把它放到 cmake 里面,当我们新建一个东西的时候, ct 会在剪切板里面有他,我们直接按 ctrl v 放下就好。 好,这样我们就有了一个 results 文件,点击它 add the excuting file, 就添加现有的东西。我们上一步这里面呢,我是准备了一些 images 上下,嗯,也可以全部加载,但是好像也没有必要,我们可以找一找啊,看看有一个,这是 apple, 对吧?然后还有一个 done 杠呢,一个一个夹板,这样呢,我们就有了一个 app 文件,对吧?我们还是可以再加进去,还是在一边去的,文件夹上面应该是有一个档的 输入。好了,好,我们有了这两个文件,我们再看下面,我们先可以把 ppt 里的这个考过来,就这两行,对吧?这是 done bottom apple bottom, 我们可以烤在这里。现在我们要修改这两个图片的位置, 我们不是已经加载进来了吗?点右键这里会有一个 copyurl, 不要用上面这个啊,因为我们现在是在不是在当前目录下面,我们在上一集目录下面用上面这个呢?他找不到好 cuppurl, 这里要注意保留前面这个冒号,下面这个也一样,那我们改成, 嗯,下面这个是 up ctrls, 然后我们点一个 control。 好,那么我们这两个按钮呢,就变成了我们提供图片,只要 ui 提供给你漂亮的图片就可以了。 我们再来改变一下我们这个按钮,一个空间会有很多种状态,比如说鼠标放在它上面的时候,它是一种状态,那么我们可以单独为这种状态设置一下它的属性和值,属性和值 我们来试一下我们的按钮加上他,那我们的按钮就会有相应的变化。 好,我们跑起来,那上面的字体就会变成黄颜色,当我们鼠标流过的时候啊,背景会变成黑的, 那我们也可以取否,也就是默认的情况下,他应该就是下面这样啊,只要我没有鼠标列过,他就是下面这种状态,那我们再试一下, 如果你有指控键,那么指控键也可以有相应的状态,我们鼠标略过的时候就恢复正常了,对吧? 好,这个地方呢,我们先给他改回来,先不去否,然后我们再修改一下他的 形状,修改形状的时候,我们可以看右边这个图 content, 也就是一个空间,他的显示要显示的核心的内容。拍顶是填充的地方,我们核心的部分 设置的大小。拍顶是按照从上开始顺时针,也就是上 右下左给的像素剥的是外面这个边框,而边框呢,我们给的是两个像素,是有一个这种凹陷的效果,是用的红色, 然后这是半径,半径指的是我们边上四个角,是这种有个弧度的效果。 好,我们试一下, 还是在这里啊,加上, 嗯,不是这个,这个贴错了,这部分 我们再把程序跑起来看一下,那现在这个效果就出来了, 当我们鼠标略过的时候和鼠标不在的时候啊不一样,然后整个形状它相应的拐角的半径我们设的是三十,然后呢,外面的边框是有 有一个凹陷,那如果我们改一下,改成这个凹陷,改大一点,改成十,那我们再试一下,这样效果会更明显一点。 好,这样效果就更明显一点。 我们再回答 ppt, 我们除了可以手写代码,然后通过文件加载,我们也可以通过 qtzna 进行编辑,编辑的效果可以直接在 qtzna 里面看到所见即所得的。这种方式 使用他有一个好处是他会给你些提示,那我们可以直接点这里,然后就会选择相应的图片啊, 然后选择一些渐变的效果,选择颜色,选择字体,就直接会深层相应的代码。这些呢,我们后面讲到 qdza 的时候,有机会我们再去使用一下, 我们还可以通过帮助文档去获取更多的关于 style shift 的内容, 也就是在帮助里面可以轻易搜索,搜索 qt star shirts reference, 这里面会有很详细的介绍, 可以作为手册进行查找,那里面也有一些适应性的代码, ok。


我们接着往下看哈,这节课看一下定义信号与槽使用可耐克特函数呢,可以让我们连接系统提供的一些信号与槽函数, 但是在整个的 q t 当中它的这个信号伪槽机制哈,并不仅仅是 使用系统提供的那部分,他还是允许我们把自己去定义信号,还有淘的。那怎么去定义呢?我们可以按照一下步骤,我来给大,我来给大家去写一下哈。步骤一, 你先确定你自定义的那个信号是啥?你自定义的槽是什么?那我们可以举个例子吗?先去确定他的一个功能哈。功能是啥呢?如果按照我们上边举的那个 例子,我们有一个快递小哥啊的一个类,那还有一个我们家人的一个类啊,那信号就是敲门的一个信号吗?那还有一个开门的动作,我们可以用这个例子哈。那也可以用什么样的一个例子呢?我们还有确定功能,有这样几个哈,第一个就是 有这样两个场景吗?别确定功能了,确定场景吧。确定啊,场景, 确定场景。一个是的老师跟学生啊,我们老师在老师跟学生,他就是上课,下课的一个事吗?比如说老师, 呃,下课了,对吧?他饿了,然后学生呢?啊?就就就是不是要呃请老师吃个饭呀,请个客啊啥的哇?有 可能反过来哈,有可能是学生饿了,老师请客,这个都都行哈。呃,再之后还有我们这个小哥,快递小哥哈,直接写小哥了,小哥敲门, 呃,敲门。然后呢?我们的一个家人啊,家里人哈,干嘛呢?他开门啊,我们我写第一个,然后大家练习的时候你去写第二个, 你去写第一个跟第二个哈,那我们确定好这个场景了之后呢?我们来啊,他有两个类哈,一个类是学生类跟老师类,还有一个是快递小哥类跟家人类,你给他起一个名字嘛? 那我们在这啊,确定场景以及类,然后我们这就这样来写吗?步骤二就是去定义,我用第一个那答案练习 用第二个哈,我去定义一个老师类和学生类, 定义这样两个类哈。怎么去定义?在我当前创建的零四 signal 这个工程当中,直接去搞了哈。直接去搞了, 呃,两个类,两个自定义类。那我们就先啊选中它之后去添加新文件,添加一个 c 加加类的一个文件哈,直接就选择 c 加加 c 加加 clus。 选择。选择以后 第一个 teacher 类需要注意哈,你在创建类的时候,第一个字母答,一定要大写,然后其他的字母你可以选选择性大写哈,无所谓。然后他继承于哪个呢?我们就让他继承于 q object 就可以了。积累啊,他就就都可以,都都有 哈。呃,往下其他的不用动啊,直接下一步,等待它创建完成哈,等待我们的这儿多一个 t, 十二点 c p p, 然后多一个 呃, teacher 点 h, 然后同样的一个方法,我们再添加一个新文件,再添加一个新的 cr 加类哈,这个是 s t u d e n t student, 也是让他继承于 q object 下一步完成,等待他完事哈,等他完事了之后,这个类我们就定义好了。定价定义好 怎么去写?在前边的时候我们已经分析好了啊,这个,呃,这个,这个方式我也是怎么怎么去定义的,我也 给它去加一下哈,不是定义类,而是添加。最后第二个步骤是添加 两个啊,定义添加两个类或定义两个类都都可以哈,就定义一个老师类,定义一个叫不叫定义定义不太准确哈,添加两个类嘛?添加 添加,添加两个类,一个是老师类,一个是学生类。那添加好这两个类之后呢?我们自定义, 自定义信号和草看一下哈,这也写了啊,你需要在老师类当中定义两个类之后,老师类当中因为他是要去用信号的吗?所以你需要在新的闹当中搞信号 的信号,然后学生类当中呢,是曹函数,所以去声明一下曹函数,我们按照这个步骤来写哈,添加老师类还有学生类。步骤三 就是在老师类中声明 啊,声明信号,然后并且在学生类中声明 声明从函数,在这需要注意哈,我们的信号他是不需要实现的,你只需要有这样的一个信号就可以了,但是这个 行函数你得声明并且加实现哈,所以我们声明再写一下哈,叫并实现。接下来我们就按照这个步骤来来弄哈,添加完这两个类的一个文件之后, 我们就先打开 teacher 的这个 cpp, 打开 teacher 的一个 cpp 哈,然后在这个 cpp 还有点儿 h 当中,我们来看一下 c p p 文件一般是来定,是来定义并且实现某些函数的,什么构造函数啊,虚构函数啊,还有类当中的一些成员函数。那现在我们对于 teacher 这个类当中,他要做的是声明,一个信号只需要声明,不需要 实现,所以我们就在类当中有一个心个弄,对吧,我们就在这啊,来给他声明一下就可以了哈,我们来写一下吗? 在老师类当中声明信号,首先我们要找到的是 t h c h e r teacher 点 h, 在 teacher 点 h 当中加声明,然后加到哪个位置,加怎样的一个内容 信号,它的返回值一般都是 void 类型的,然后信号的名称我们自己去写就可以了哈,什么饿了的信号啊,用拼音用,用什么都行哈啊,我们去 声明一个信号,就加上这样的一个内容就可以了哈,加上这样的一个内容不需要你去实现,然后在这 我给大家去去加上哈,加上之后我们来说一下哈,简单的来说,后边还是会去给大家总结哈。关于 这个信号返回值,那我们要使用 void 它呢?参数啊,可以存在,可以存在参数哈,参数可以存在,然后返回值一般都是 void 了之后,它 他他不需要啊,叫紧声明不实现,不需要实现啊,这是他的这几个特点。然后还有一个可不可以被重载呢?他只要可以存在参数或或 不能说只只要哈啊,一般情况哈,他是可以重载的啊,可以重载没有问题哈,这是我们的这个信号函数,我们来加一下哈,信号函数返回值, word 没有问题,参数想加就加, 不想加呢,你就不加,仅需要声明,不需要实现,可以被重载啊,下节课的一个时间,我接下来我们也可以重载一个试试哈,也可以给他加一些参数,加一下参数来重载一下试试哈。这是 呃,在老师类当中去声明一个信号,然后接下来在学生类当中去声明,并且实现找到我们的 stu dnt 点 h。 我们先去声明啊,我们先去声明,然后在这还得再加一个哈。信号 一般是在一般在哪去写呢?在我们的这个 signals 里边去写哈,在这写里面,然后在他的一个里面写,然后在他的一个下面去写啊,都可以哈,你,你怎么 怎么能理解,怎么怎么去记这是这然后呢?下一个关于他的曹函数,我们打开我们 student 点 h student 点 h。 曹函数呢?我们一般情况是加到他有一个工友的一个草函数嘛,加到这个位置哈,那曹函数我们也可以来写一下嘛?呃,曹函数一样的返回值是 void, 然后起一个名字叫叫吃饭,下课了学生去吃饭吧。啊?或或者是我看一下之前的那个场景是干嘛的呢? 啊?学生请客是吧? ok, 那既然学生请客的话,学生请客请客就是吹 it 啊。写一个这样的一个函数哈,关于曹函数,关于曹函数,他也是他也 是。那返回值,我们给 void 一样的地方,我就我们一,我们给他给他去一块去写一下嘛。曹函数,曹函数一般在哪个位置写呢?一般在这个位置去写, 一般在这个里面去写, 一般在这里面去学。对于 对雨一些 高版本的啊,高版本的 q t 来说来说也可以写到 哪呢?写到我们 public 里面呀,也可以写到这个 public 里面也可,或者 全局,把这写到全局他都是可以的哈。这是第一项这是第一项。关于他写的一个位置,一般情况是在哪去写?对于一些高版本呢,他又可以写到哪?返回,这是 y 的,没有问题。参数可以存在吗?可以存在 声明,需要声明。需不需要实现呢?都需要哈。叫需要声明并 需要声明并实现。可不可以被重载呢?也可以啊,也可以被重载。那他怎么去写?刚才我已经写好了哈,就是这样去写的。那这是他的一个声 名,那他的定义定义,我们一般加到 stu 低音 t 点 cpp 内部哈,我们在 cpp 点儿是一般是声明的 cpp 呢? 来实现它的哈,来实现它的。我们找到 student 点 c p p, 然后在它的一个下方来定义一个函数哈。定一个成员函数,这个成员函数来搞一下哈,它 的作用欲加一下哈。加完作用欲加到这啊,把函数把这个就先写到这就可以了哈。 这就是我们这前前前三个步骤哈。我们把刚才加的代码,我也是拿到咱们的笔记当中拿过来 写到这哈,写到这,然后里边的内容可以换一下哈,换一下就就先写到这就可以了。那大家来考虑哈。刚才说的是老师饿了,老师饿了,饿了是一个信号,学生请客吃饭。那请客吃饭。走到这个函数,那我们 可以加一个内容哈,我们加一个内容,让他叫去打印一下,请吃饭啊你。你得知道他这个函数他被调用了呀,所以我们加一个 qd bug。 加一个 qd bug, 我们可以之前有加过哈,所以我就去以前的代码当中。 之前有加过吗?没有印象了哈,有在这给他拿过来嘛。在我们 student 的 cpp 当中,我想在这个函数操函数当中加一个打印,加一个打印 qd bug, 让他打印一下 内容,加到这个位置,然后 ctrl 加 i, 可以自动对齐哈,让他打印一下。请吃饭啊,叫请 老师,饿了。那就要请老师啊,吃个饭呀。哇,这样的话就可以了哈,保存我们一样的 做一件事哈,把它呢也重新再拷贝到这,然后需要注意哈,你还得添加投文件,那个投文件添加的内容我也是给大家去 啊,拷贝到我们的笔记当中哈,方便大家去自己去写,去调试加到合适的位置哈。 ok, 那目前为止我们自定义信号完事了,自定义累,把自定义,自定义信号,自定义层函数都已经实现, 那实现了之后,接下来我们就该去使用一下了。那怎么使用呢?我们还是回到我们的 vgt 点 cpp 哈,你可以来看,在这个 vgt 点 cp 当中,我们做了只创建了一个按钮,按钮可以关闭窗口。那 什么时候会有那个信号呢?那个信号他要去请吃饭,这个请吃饭什么时候打印呢?我们想要让信号,我们自定义的 这个信号和从函数关联起来的话,得在我们的 reget 点 cvp 当中。干嘛呀? 你想关联起来的话,你得调用一个 connect 函数啊,让 connect 函数我能写。那写完之后来我在这给大家去写一下哈。怎么去写呢?你可以在这 这个位置啊,去写那信号的发出者。那你得是老师啊,那我们有定义老师吗?还没有,所以我我们我们下节课再定义哈,我先把这个视频保存一下。


嗯,我们来自定义一个消息框哈,自定义一个消息框,那 q t 呢?它是支持模态对话框。还有这个非模态对话框的模态与非模态的一个实现的区别就是,如果你使用的是对话框当中的一个 e s e c, 那他实现的就是一个模态对话框,而且是应用程序级别的。那如果使用的是 open, 他也是 模态的对话框,也是,你在使用这个来打开某一个窗口的时候,他也是不允许你窗口以这个对话框以外其他的地方操作的哈,有这样两个,那如果是非模态,我们就可以使用一下这个数函数,那 来写一下嘛,简单的来写一下哈,自定义 dialog 对话框,它可以 有这么两种对话框哈,一种是模态对话框,这种是模态对话框的一个实现哈。还有一个是叫非模态对话框 的一个实现哈,我们来写一下,写下,就在这个零六 u i 的基础上来写了哈,因为他就只画了一个简单的界面嘛,什么都没有,我们就在这个基础上去写,在这个基础上来写。我们想要在原先 啊,你有着菜单栏工具栏的这个页面上再搞出来一个对话框啊,搞出来一个对话框,这个对话框 我们就让他一开始就存在嘛。想要搞对话框的话,我们得用 q dear log 这个这个这个类哈,这个这个类,然后定义一个变量,然后设置一下对话框的一个标题,然后调用 e s e c 这个函数,就可以实现了哈,我就不去去写了哈,非常简单,保存,保存以后去变异运行,在变异运行的时候需要注意哈,你没有定义 i n c l u d e, 然后去用对话框的这个类要包含人家的头文件保存就可以看到了,这就是一个模态的对话框,如果你想对 对啊,你主窗口的界面上进行操作的话,如果你不把它关了,你关了之后你才能进行操作吗?你不关他就是没有办法进行操作的哈,这就是一个,呃,比较简单的 啊,自定义一个模态对话框,我们怎么去定义哈,就三行代码就可以搞定,然后 d 的添加头文件, 我把他的文件也给拿过来,放到这就好了,这就是一个模态对话框哈,而且是应用程序级别的。那还有一个 open 的,你也可以 去用一下啊,创建一个,然后掉一个 dialog 下边的一个 open 方法,然后往下呢?非模态的对话框我们怎么去写?在上边的 基础上做一个修改就好了。 e s e c 还有 open 是模态的,然后它有一个什么呢?数函数,数函数,它就是一个啊非模态的对话框了,那这个 我们来修改一下代码哈,你来可以来看一下,在使用的时候他可能会有一些问题,不知道大家能不能注意的到哈,我们在这来来来,看一下哈,来写一下, 我们回到这这种方式,先给他屏蔽掉,之后我们来换一下,看一下哈,看一下这个地方啊,非魔态的一个对话框,我们用数函数 啊,指一下它的一个 this 指针哈,做一下它的一个 this 指针,如果这样去用的话,我们 再拿过来哈,还是定义了一个类变量,然后设置了一下它的一个标题,然后调一下是否函数,你会发现有问题存在的哈,你的那个对话框是吧? 咋没有显示呢?他不是没有显示的,看一下,我再来去运行一下哈,注意看一下 左上角,刚才他弹出来了一个东西,看一下这个位置哈,你的模态对话框他会显示,但是会一闪而过啊,你这样去用还是不行的哈,为什么会有这样的一个问题呢?是因为 你的输入函数,它是不会堵塞当前线程的,你的对话框呢?会显示出来,但立刻返回,因为你的 dialog, 我们前面在定义的时候,它不是在站上的吗? 那你说函数返回了,函数结束,那超出作用欲,他不就会被吸够吗?所以就消失了哈,就这样的一个问题,那知道是因为站的一个原因,那我们怎么去解决呢? 我们怎么去解决呢?那么就不要用这种方式了呗,我们就去 new 一个呗,这种方式我们不要了哈,我们要去 new 一个。在堆上去创建,在堆上去创建 就是这样的,那我们来保存运行, 保存运行,可以看到有问题哈你咱们创建的啊,你就啊点应该是用箭头了哈, 我们用电箭头来这个也给他换一下,然后呢? ctrl 加 s 保存保存以后再来去运行一下 运行。大家可以看到哈,对于这种非模态对话框,我们可以是吧把你这个窗口,如果对话框如果不关闭的话,这也是可以进行操作的哈,那这就 ok 了,这种方式是可以的哈,但是 再仔细的看一下这段代码有没有问题啊,看一下你是否足够细心。 diar log 它会把你用完,用完之后干嘛呢?它会有内存泄露 它会有内存泄露哈,你带儿 log 使用的时候是在堆上分贝的空间,但是你一直没有 delay, 一直没有 delete, 你用完之后没有 delete, 你也没有设置他的一个父亲,对吧?所以在这儿哈,就会有一定的一个问题,那解决方案非常非常简单,你只需要将我们蛮 window 的一个指针,把将蛮 window 的一个指针给到我们的一个单 log 就可以了。俺们前边是不是讲过呀,你再去创建控件的时候,只需要指定它的一个 parent, 然后它就可以不用,我们自己去 delete 就可以,人家自动帮你去回收内存,然后在这儿呢,我们 我们可以自己去 delete 一下,但是呢,这样做会存在一个问题,那如果你的对话框不是在一个界面类当中去,在整个的这个 ui 界面类出现,我还在其他的一个类当中去出现了,那你的 qvgt 的一个 parent 就必须得用指针的一个方式传递给对话框。那另外如果你对内存的一个占用啊有严格限制的话,主创 作为 pirant, 主窗口不关闭,对话框就一直不会被销毁,所以呢,他就会一直去占用内存。我们怎么去解决这样的一个问题? 我们在这来写一下哈。再去创建非模态对话框的时候,有这样的几个注意事项,注意 叫对话框创建,要在堆上堆 上进行创建,不能在战当中去创,去创建的话,他就会一闪而过 堆上键,这是第一个需要注意的哈,然后第二个 需要注意的啊,你就是你有对上,你是不是要对应着来?要对应?有啊,有语对话框 独立啊,你是独立于我们拍独立于我们的 my window 之外的,你就要要要,要干嘛呢?要独立释放, 要独立去释放,然后如果独立去释放,如果他非常非常简单,他就只有一个窗口去用啊,有一个窗口去用,或者是 用一个窗口去用的话,他也会有问题的呀。一个窗口去用你的,你把他的那个呃主窗口 窗口,如果我们的 delete 你是在哪呢?是在这儿去释放的话,你的这个慢 window 啊,一直窗口没有关闭,你的对话框就会一直存在,它就会一直占用内存,一直占用内存哈,所以我们在这儿需要注意哈, 叫由于对话框的特性 由于对话框它有这样的一个特性哈,所以我们可以可以设置 对画框关闭, 自动销毁对话框。 自动去销毁对话框啊,它有哪些特性啊?就是它啊,没有 parent 啊,是这样的哈,然后我们这就可以这样去写了哈。怎么去写?在我们原先代码的一个基础上,也就是在这个代码的基础上,我们可以在他的基础上加 delete 嘛,再加 delete, 程序一多就会容易出现问题。我们可以这样写哈,还是在堆上去创建 new 一个 new 完之后呢?我们 给他设置一个自动销毁。自动销毁有一个函数哈,叫 set 什么什么什么,在我们课件上他是存在的哈,他是存在的,那在这儿我们调一下这个函数哈,他就 k 了,给它压到这儿,它就可以自动去销毁了哈,我们也不需要把你去写 delay 了,不需要你去写 delay 了。好,我们把它拿到我们的代码当中,放到这儿哈,保存, 大家可以看到,那我们再去关的时候,它就会自动销毁资源。那我在关闭窗口的时候,因为你没有设置 parent 嘛,所以它也不会对它把多重去释放了哈。 ok, 关于 这个自定义 dialog 对话框,我们就说这些,一个是模态对话框怎么去创建?一个是非模态对话框我们怎么去创建哈?


好,今天和大家分享一个,如果我们用 q t 做了一个简单的小软件,如何打包给别人用呢?因为有时候我们自己电脑能运行,但是呢,如果我们把发布版的 软件打包给别人,有时候运行不了,说是缺文件,这时我们用这种方法打包。好,我们做一下演示,我打开一个之前自己做的软件。 好,这是客户端,我们看一下, 一会为了加深印象会重复两遍,因为刚好这个是客户端,一会再把客呃服务端打开, 我们是选择一个他是发布版的,然后点击运行。 好,他是在运行中,我们稍微等一下这个绿颜色,然后 这边也能看到。好,呃,这就是之前变得一个软件,我们先把这个软件发到别人电脑上,可能有时候打不开,我们用这种方式,我们先关闭, 因为我们刚才编译,然后运行了,所以的话这边就有一个发布版的软件 release, 我们可以看一下,这是在自己电脑上,他是能打开的,但是在别人电脑上可能打不开。 就是如果我们把这个发布版的这个软件拷贝给别人,所以我们用这种方式可以新建一个文件,假如这个文件的名字就是 plant, 就是这个名字,我们可以把帆布版的 exe 拷贝在刚才建的目录中,然后输入一个命令 cmd, cmd 的话,然后我们要给他打包成温度是不能运行的文件。 windows wind e diplo windows 步数 q 七,然后把要步数的这个文件名,然后打上,确定 好,这时候已经运行成功了,我们可以看一下,这是我们新建的这个文件,已经做出来好多的文件,这些文件就是支撑在其他电脑运行的一个环境, 我们再演示一遍,这个是 clan, 一会我们再演示一个他的 service 服务端, 一会我们把自己电脑上运行好的软件考配到其他电脑上,看能否运行成功。好,我们看 service, 我们运行一下, 这时 siris 已经打开了,我们把自己编好的软件以发布版的形式,然后运行, 这时候他在运行 好,现在已经运行成功了,我们可以关掉, 打开那个已经编辑好的那个目录,这是 service 好,瑞丽丝,然后我们新建一个文件夹,假如就叫 service 好,我们把这个编辑好的这个软件,这个 ex e 考进去,然后用刚才的命令 windows, 这是在 window 下,这飘是步数 q 七,然后把名字一打,然后回车。好,这时候已经设置好了。这 我们一会测试一下,看能否在其他电脑上运行。我们把这两个文件发送到另外一台电脑,我这个电脑是, 嗯,温室系统,温室的他是可以打开的,可以看一下,他是可以打开的。好,我们现在把刚才用命令打包好的软件发到其他电脑上,看是否能够成功。 我们放到 这是一个温七系统,我们放到温七系统下, 真切 是设备 style, 我们再把 ct 拷贝过去,这是我们之前生成的 好,也要考虑过去。 好,刚才是模拟,就是把自己生成这个软件,这已经打包好了,然后拷贝到别人电脑上,我们看一下可以运行吗? service, 嗯,运行成功,然后是 clint 运行成功。其实他的见面可能是有差异的,因为有时候和分辨率有关,有差异的。嗯,假设我们 tcp 通信 一下启动服务 很好,允许看一下软件是不是有问题,然后连接服务, hello, what? 嗯, ok, 接收到, ok, 好,没有问题,好,这就是 q 七软件打包的一个过程,和大家分享一下。