学习qt关于信号,槽的的一些小总结
·
QT信号和槽:
我们举一个很简单的例子:我是阿拉丁,我捡到了一个神灯(我们都知道的一个寓言故事),那么
我擦拭灯,灯内飞出灯神,这样灯神就能实现我的三个愿望(hhh)
那么,我就是信号的发出者,擦拭灯这个动作,就是信号,灯,就是信号的接收者,灯神出来,就是信号的反应,也就是槽
1.信号
-
使用signals关键字声明,只要有函数声明,不需要实现
-
可以自定义信号
-
没有返回值 void
-
可以带参数 **:void sig1(int ,double,QString) ** Tips:要和槽函数的参数类型相对应
-
可以使用emit关键字发送信号
2.槽
-
可自定义槽函数:在
-
类的任意成员函数
-
静态函数
-
全局函数
-
lambda表达式(c++11才支持)
-
-
槽函数没有返回值 void类型
-
可以带参数(同上)
3.连接(connect)
- QT4中:
1通过宏:SIGNAL和SLOT来使用信号函数和槽函数
connect(
sender,SIGNAL(sign1(int ,double,QString)),
receiver,
SLOT(slot1(int ,double,QStribg)));
缺点:编译时不会检查错误
- QT5中
1信号槽使用的函数地址:
connect(
sender,//信号发出者
&Sender::sig1,//信号
receiver,//信号接收者
&Receiver::slot1)//信号处理函数
优点:编译过程会对函数类型,个数做检查
注意事项
- 信号,槽函数可以是不一样的:槽函数参数可以少于信号的参数个数,且不可逆
- 信号,槽函数必须一一对应
5. 扩展
- 信号可以连接信号
- 一个槽函数可以同时被多个信号连接
- 槽函数可以使用lambda表达式:万能公式:={}()为lambda表达式的标识
- 信号,槽连接之后,可以被断开:disconnect
更多推荐



所有评论(0)