Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。例如,若要将一个窗口部件的变化通知给另一个窗口部件,则一个窗口部件发送信号,另一个窗口部件的槽接收此信号并进行相应的操作,即可实现两个窗口部件之间的通信。每个Qt对象都包含若干个预定义的信号和预定义的槽,当某一个特定事件发生时,一个信号被发送,与信号相关联的槽会响应信号并完成相应的处理。当一个类被继承时,该类的信号和槽也同时被继承,也可以根据需要自定义信号和槽。
1.信号与槽机制的连接方式
1)一个信号可以与另一个信号相连,代码如下:
connnect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));
表示Object1的信号发送可以触发Object2的信号1发送。
2)同一个信号可以和多个槽相连,代码如下:
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect(Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));
3)同一个槽可以响应多个信号,代码如下:
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect(Object3,SIGNAL(signal2),Object2,,SIGNAL(slot2));
但,常用的连接方式:
connect(Object1,SIGNAL(signal1),Object2,SLOT(slot));
SIGNAL()和SLOT()是