QT学习笔记2——信号和槽

本文深入探讨了信号(Signal)和槽(Slot)机制在Qt框架中的应用,详细讲解了如何使用信号和槽进行组件间通信,包括信号的连接、断开及自定义信号和槽的创建。此外,还介绍了信号与槽的多种连接方式及其参数匹配原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信号(Signal)和槽(Slot)

传智播客学习视频传送门

  • 伪代码描述:
connect(信号的发送者,发生的具体信号,信号的接受者,信号的处理(槽))

eg:

//需求:点击mybtn实现关闭窗口的功能 connect(mybtn,&MyPushButton::clicked,this,&mywidget::close);

断开

disconnect()

QPushButton的Signal函数

继承自QAbstractButton

void clicked(bool checked=false)	//点击
void pressed()						//按下
void released()						//松开
void toggled(bool checked)			//一直按着不松开

自定义的信号和槽

自定义信号

  • 写在signals下

  • 返回值为void,只需要声明

  • 可以有参数,可以重载

自定义槽

  • 早期版本必须写到public slots下,高级版本可以写到public或者全局下
  • 返回值是void 需要声明也需要实现
  • 可以有参数可以重载

函数重载冲突

此时需要函数指针指向函数地址

eg:

void(Teacher::*teacherSignal)(QString) = &Teacher::hungry;
void(Student::*studentSignal)(QString) = &Student::treat;
connect(tc,teacherSignal,st,studentSignal);
classIsOver();

拓展

  • 信号可以连接信号

  • 一个信号可以连接多个槽函数

  • 多个信号可以连接一个槽函数

  • 信号和槽函数的参数类型必须一一对应

  • 信号的参数个数可以多于槽函数的参数个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值