信号与槽是Qt核心特点,更是Qt框架引以为豪的机制之一。信号与槽是对象间(可以理解成事件发生者与接收者)进行通信的机制。
事件发生者与接收者通常通过connect()函数进行连接,connect()函数最常用的一般形式:
connect(sender, signal, receiver, slot);
- sender:发出信号的对象
- signal:发送对象(即sender)发出的信号
- receiver:接收信号的对象
- slot:接收对象(即receiver)在接收到信号之后所需要调用的函数
举个例子,当页面某个按键(sender)被按下后,它会发出一个信号(signal),这种信号的发出是没有目的的,类似于广播。如果有对象需要通过这个信号触发动作的话,此时就需要连接函数(connect()函数),连接函数将发送者与接收对象(receiver)连接起来,接收对象接收信号后触发的动作就写在槽函数(slot)中。
使用信号与槽的三种方法
connect不同参数形式
上面介绍了信号与槽的概念,那么信号与槽一般都表示为:
connect(sender, SIGNAL(signal()),receiver, SLOT(slot()));
信号可以是系统提供的,也可以是自定义的。如果信号与槽带有参数的话,需要注明参数的类型,并且信号的参数是可以比槽函数的参数多,但不允许槽函数的参数比信号的参数多! 槽函数中可以忽略信号中多余的参数,但是槽函数存在的那些参数的顺