🐌博主主页:🐌倔强的大蜗牛🐌
📚专栏分类:QT
❤️感谢大家点赞👍收藏⭐评论✍️
目录
一、基本语法
在 Qt 中,允许自定义信号的发送方以及接收方,即可以自定义信号函数和槽函数。但是对于自定义的信号函数和槽函数有一定的书写规范。
1、自定义信号函数书写规范
(1)自定义信号函数必须写到 "signals" 下;
(2)返回值为 void,只需要声明,不需要实现;
(3)可以有参数,也可以发生重载;
2、自定义槽函数书写规范
(1)早期的 Qt 版本要求槽函数必须写到 "public slots" 下,但是现在高级版本的 Qt 允许写到类的
"public" 作用域中或者全局下;
(2)返回值为 void,需要声明,也需要实现;
(3)可以有参数,可以发生重载;
3、发送信号
使用 "emit" 关键字发送信号 。"emit" 是⼀个空的宏。"emit" 其实是可选的,没有什么含义,只
是为了提醒开发人员。
示例:
1、在 widget.h 中声明自定义的信号和槽,如图所示;
2、在 widget.cpp 中实现槽函数,并且关联信号和槽 ;
注意:图中的 ① 和 ② 的顺序不能颠倒。原因是, 首先关联信号和槽,一旦检测到信号发射之后就会立马执行关联的槽函数。反之,若先发射信号,此时还没有关联槽函数,当信号发射之后槽函数不会响应.
二、带参数的信号和槽
Qt 的信号和槽也支持带有参数, 同时也可以支持重载.
此处我们要求, 信号函数的参数列表要和对应连接的槽函数参数列表一致.
此时信号触发, 调用到槽函数的时候, 信号函数中的实参就能够被传递到槽函数的形参当中。
示例:信号槽参数列表匹配规则
1、在 "widget.h" 头文件中声明信号和槽函数;
![](https://img-blog.csdnimg.cn/direct/dd33e2fe8638423c9fc26a6bb9a5a1b0.png)
2、在 "widget.cpp" 文件中实现槽函数以及连接信号和槽;
![](https://img-blog.csdnimg.cn/direct/538c253534d1438aa86a6759bfce0352.png)
其实信号的参数个数可以多于槽函数的参数个数,但是槽的参数个数不能多于信号参数个数.但是实际开发中最好还是保持参数个数也能匹配一致
❤️结语:
本次精彩内容已圆满结束!希望各位读者在阅读过程中能够收获满满。在此,特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处,欢迎在评论区留言,蜗牛必定会认真对待并加以改进,以便为大家呈现更优质的文章。你们的支持与鼓励,将是博主不断前进的最大动力。再次感谢大家的陪伴与支持!