QT 入门到实践篇 03_信号和槽01:自定义信号和槽函数的创建及使用

03_信号和槽01:自定义信号和槽函数的创建及使用

先写出一个功能需求:下课后 老师触发信号 饿了 学生响应信号 请客吃饭

一、建立老师类和学生类

基类直接选择QObject,这样就可以将其创建到对象树中,不用考虑释放的问题。

二、信号函数

在teacher类中定义信号函数,teacher.h中的内容:

添加自定义发出信号(饥饿hungry),无参函数

注意:信号不需要在.cpp中添加实现代码(void…

三、槽函数

1、在student类中定义信号函数,student.h中的进行声明:

添加自定义接收信号(响应treat)

注意:槽函数必须声明,右键单击treat.cpp中添加实现程序void Student::treat

如果没有实现,会出现如下报错

student.cpp中:

四、将老师和学生对象连接起来

widget.h

在widget.cpp中:

五、下课后函数触发信号槽

widget.h

widget.cpp

运行后槽函数触发。

六、自定义信号槽需要注意的事项:

    发送者和接收者都需要是QObject的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外);

    信号和槽函数返回值是 void

    信号只需要声明,不需要实现;

    槽函数需要声明也需要实现;

    槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;

    使用 emit 在恰当的位置发送信号;

    使用connect()函数连接信号和槽。

    任何成员函数、static 函数、全局函数和 Lambda 表达式都可以作为槽函数

    信号槽要求信号和槽的参数一致,所谓一致,是参数类型一致。

如果信号和槽的参数不一致,允许的情况是,槽函数的参数可以比信号的少,即便如此,槽函数存在的那些参数的顺序也必须和信号的前面几个一致起来。这是因为,你可以在槽函数中选择忽略信号传来的数据(也就是槽函数的参数比信号的少)。

七、学习视频地址:自定义信号和槽函数的创建及使用

参考:

QT从入门到实战x篇_06_信号和槽2:自定义信号和槽函数的创建及使用_qt创建函数_十月旧城的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值