一、connect函数详解
00:00
1. click函数传参
00:25
基本结构:connect(ui->pushButton, &QPushButton::clicked, this, &Widget::btnSlot)
参数说明:
第一个参数:按钮对象的指针
第二个参数:信号类型(如clicked)
第三个参数:接收信号的上下文对象
第四个参数:槽函数(如btnSlot)
2. click函数申明
00:45
所属类:QObject类中的内联方法
实现特点:模板方法必须在.h文件中实现
返回值:QMetaObject::Connection类型
3. click函数方法
01:11
参数顺序:
发送者对象指针
信号
接收者对象
槽函数
类型检查:通过静态断言确保信号和槽参数匹配
4. connect函数参数
02:06
1)type
02:24
默认值:Qt::AutoConnection
参数位置:第五个可选参数
2)type类型
02:33
AutoConnection
03:11
默认行为:自动判断使用DirectConnection或QueuedConnection
判断依据:根据接收者是否在发送信号的线程中
使用场景:大多数情况下只需使用默认值
DirectConnection
04:23
执行方式:信号发出时立即调用槽函数
线程特性:槽函数在发送信号的线程中执行
适用场景:单线程应用或性能敏感场景
QueuedConnection
04:35
执行方式:控制返回接收者线程事件循环时调用
线程特性:槽函数在接收者线程中执行
参数要求:参数类型必须被Qt元对象系统识别
BlockingQueuedConnection
04:55
特殊行为:发送线程会阻塞直到槽函数返回
限制条件:不能用于接收者在发送线程的情况
风险提示:错误使用会导致死锁
UniqueConnection
05:23
特殊功能:防止重复连接(位标志,可与其他类型组合)
引入版本:Qt 4.6新增
使用频率:相对较少使用
5. click函数实现
05:46
实现特点:QObject类中有多个重载版本
默认选择:自动选择最适合的连接方式
开发建议:通常只需关注四个基本参数