浅谈Qt信号槽的实现原理

发布时间 2023-12-14 21:05:51作者: 代码搬运工#1

背景:
1、使用信号槽,需要先“Q_OBJECT”
2、通过connect函数进行信号槽绑定
3、通过emit signal()发送信号
原理:
1、Q_OBJECT是一个预编译命令,可生成很多函数、变量。
生成存储Connection对象的列表。
2、connect函数需要四个信息:信号发送者、信号、接受者、槽函数
connect函数生成一个Connection对象,该对象存储在“信号发送者”的Connection对象列表中。
3、由于Connection对象存储在“信号发送者”的Connection对象列表中,
当信号发送者发送信号时,可以从自己的列表中找出所有拥有该信号的Connection对象。
提出Connection对象中含有的接受者、槽函数,进行调用——接受者->槽函数实现函数回调。