学习qt关于信号,槽的的一些小总结

    技术2022-07-11  76

    QT信号和槽: 我们举一个很简单的例子:我是阿拉丁,我捡到了一个神灯(我们都知道的一个寓言故事),那么 我擦拭灯,灯内飞出灯神,这样灯神就能实现我的三个愿望(hhh) 那么,我就是信号的发出者,擦拭灯这个动作,就是信号,灯,就是信号的接收者,灯神出来,就是信号的反应,也就是槽

    目录

    1.信号2.槽3.连接(connect)注意事项5. 扩展

    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
    Processed: 0.011, SQL: 9