当前位置: 首页 > wzjs >正文

pc网站建设的三大条件济南网络推广网络营销

pc网站建设的三大条件,济南网络推广网络营销,有没有日本人教做料理的网站,做网站所需的知识技能文章目录 qt信号与槽--02自定义槽函数第一种方式第二种方式 自定义信号不带参数带参数 总结结语 很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!! 今天我们进一步c11中常见的新增表达 作者:٩(…

文章目录

  • qt信号与槽--02
    • 自定义槽函数
      • 第一种方式
      • 第二种方式
    • 自定义信号
      • 不带参数
      • 带参数
    • 总结
    • 结语

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
在这里插入图片描述
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!

qt信号与槽–02

自定义槽函数

第一种方式

首先自定义槽函数,就跟我们之前定义的普通成员函数没有什么问题,而且之前我们已经实现过类似的方法了。
在这里插入图片描述
但是在qt4之前的版本中,信号处理函数必须放置在public/private/protected slots这个状态下:
形如:
在这里插入图片描述
slots是qt中新增的关键字,在qt中,关键字的作用是:因为qt使用的是元编程技术(代码通过qmake生成代码之后,编译器调用的是这个qmake生成的代码),qmake构建qt项目的时候,会调用对应的扫描器,来扫描项目中的关键字
但是随着到达qt5以及更高的编译器上,槽函数已经允许直接被public/private/protected这三个类型限定符修饰了,即slots去掉也无妨

第二种方式

第二种方式还是基于图形化创建空间的方式,我们来看操作:
在这里插入图片描述
随后我们右键这个控件,点击转到槽
在这里插入图片描述
我们能够看见,PushButton这个类本身没有内置的信号,使用的都是继承父类的信号~~

随后我们双击clicked(),来看界面:
在这里插入图片描述
我们在其中书写上信号处理的操作,并来构建这个qt项目:
在这里插入图片描述
在这里插入图片描述
此时信号与槽的连接仍然建立好了,请问,之前我创建了connect函数来连接信号与槽吗?既然我没有建立信号与槽的连接,那么为什么槽函数被执行了呢?
我们来观察这个槽函数的命名规则就能够获取一些答案!!

pushButton,这个是我们创建控件对象的对象名,而clicked是这个控件对象发出的信号类型,难道真的有这么巧吗?

实际上,信号的连接方式除了使用connect函数,还能够使用函数名字的方式来建立连接,并且这个名字的命名一定是发射信号对象和发射信号类型

如果我们将名字稍微修改一点点(此时我将函数名的ed给去掉了),就会发现信号与槽函数无法建立连接,即信号已经发出,但是面板不为所动!!
在这里插入图片描述
而且下方出现了这个提示!!
在这里插入图片描述
其实,这里通过函数的名字方式来建立连接底层是调用了connectSlotsByName这个函数,即调用这个函数,就会触发上述通过函数名自动连接信号槽的规则

如果此时我们将名字修改回来,再来看结果:
在这里插入图片描述

总结:如果我们使用图形化方式创建控件(界面控件固定,不灵活),还是推荐这种更加快速的方式,此时不用再来connect了,反之,纯代码手写需要调用connect建立连接

自定义信号

信号的本质是什么?可以理解为信号就是用户执行了一个操作!!

不带参数

qt中也允许自定义信号,但是这种方式不常用,因为用户能够在面板上能够执行的操作就那么几种,所以信号就那么几种。在qt内置的类中大致已经包含完全了。只有极少数情况下会自己重新设置信号~~

虽然我们Widget内部还没有定义信号,但是在继承的QWidget和QObject中,实现了许多内置的信号。

但是如果自定义信号,和我们函数差别较大。

自定义信号特点:
1:我们只用写出声明,定义的话qmake会自己帮我们实现
2:返回值必须是void,不返回任何东西
3:必须有signals修饰
4:有没有参数都可以(甚至可以支持函数重载)

同理,signal也是qt中新增的关键字,qmake调用扫描器就能够识别接下来我写的函数是一个信号。以便于qmake为信号内部生成对应的定义。

我们来看一个测试用例:
在这里插入图片描述
我们来看结果:
在这里插入图片描述
我们发现,此时我们的windowTitle并没有有发生改变,这是什么原因呢?
虽然我们建立了槽函数与信号的连接,但是此时我们的信号并没有发射,信号没有发射,当然也就不会执行对应的槽函数

qt中还有一个关键字,可以来表示信号的发射,关键字为emit
但是在qt内置的信号中,都不需要我们手动实现,用户在gui面板中执行某些操作,信号就能够发出,即qt信号中发射信号的部分,已经内置到我们的qt框架中了

在这里插入图片描述
这样信号就发射成功并执行了对应的槽函数。
而且,发射信号的代码只要是写到合适的位置都是可以的,不一定需要写到Widget的构造函数中。

其实现在发展到qt5的时候,emit啥都没有做,真正发射信号的部分其实都在qmake生成信号函数的定义中都已经实现了
因为编译器自己错,犯错的概率肯定比程序员犯错的概率低~~
本质上就是调用了这个函数,发射信号的部分在函数定义中自己实现了,而且信号函数定义的实现程序员是无法进行干预的。

带参数

信号和槽也可以带参数,此时的作用为:

通过对于发射信号的参数传递,这个参数最终会传递到槽函数中。

所以,此时,槽函数和信号的参数类型必须一致,至于个数,槽函数的参数个数必须少于信号函数。即信号参数参数更多

来看代码:
在这里插入图片描述
来看结果:
在这里插入图片描述

总结

今天我们学习了qt如何通过图形化的方式来快速创建控件,更快速的连接信号与槽,底层是怎么样的(一定要调用那个函数,才能够触发对应的机制),函数名的命名规则,槽函数qt4之前的注意(slots关键字)。
重要的就是连接槽函数的方式(connect链接,特殊函数名链接)~~

学习了信号的定义规则,三点,以及定义信号之后需要发射信号,qt中新增的emit关键字~~

学习了带参数的信号槽信号函数和槽函数参数的书写规则~~

结语

今天的内容就到这里,不足之处欢迎留言指出,感谢大家支持!!
天行健,君子以自强不息;地势坤,君子以厚德载物!加油!!
在这里插入图片描述

http://www.dtcms.com/wzjs/297959.html

相关文章:

  • 如何设计公司网页网址seo查询
  • 成都最新房价一览表来客seo
  • 外贸网站建站用什么意思沈阳seo推广
  • 营销型网站是什么实时热搜榜榜单
  • 怎么查看一个网站页面的seo优化情况百度官方人工客服电话
  • 广东外贸网站建设山西网站seo
  • 如何做网站的301重定向上海最新新闻
  • 照片视频合成制作软件seo公司哪家好用
  • 创建网站要多长时间网站搜索引擎
  • 洛阳网站建设排名靠前搜索关键词排名
  • 网站建设的现状与趋势论文网络营销工具介绍
  • 网页设计阶段南昌seo公司
  • 动态视频素材网站网络营销方案模板
  • 网站中心深圳网络推广案例
  • 网站如何做seo优化今天发生的新闻
  • 用什么自己做网站吗兰州网络推广新手
  • 网站模板 响应式企业营销策划包括哪些内容
  • 传奇手游下载平台手机版郑州搜索引擎优化
  • h5网站需要哪些技术百度助手手机下载
  • 做团购的的网站有哪些求网址
  • 网站建设哪里好东莞网络优化服务商
  • 0基础如何做网站网络营销实施方案
  • 网站是用什么软件做的吗广州日新增51万人
  • fn网站不是做那么好吗西安seo网站排名
  • 找公司做网站希爱力双效片副作用
  • 品牌高端网站建设公司百度推广入口
  • 学校网站建设策划长春seo优化企业网络跃升
  • wordpress自动生成tag新河seo怎么做整站排名
  • 网站代办备案购物网站
  • 自己做培训网站湖南做网站的公司