一、概念
信号(Signal):在特定情况下被发射的事件,信号可以看做是特殊的函数,需要带括号,有参数时还需要指明参数
槽(Slot):对信号响应的函数,可以 定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行
二、信号与槽的关联
信号与槽关联是用
QObject::connect()
函数实现
1、一个信号可以连接多个槽
connect(pushButton, SIGNAL(clicked()), this, SLOT(hide());
connect(pushButton, SIGNAL(clicked()), this, SLOT(close());
2、多个信号可以连接同一个槽
connect(pushButton,SIGNAL(clicked()),this,SLOT(close()));
connect(pushButton_2,SIGNAL(clicked()),this,SLOT(close()));
connect(pushButton_3,SIGNAL(clicked()),this,SLOT(close()));
3、信号也可以连接信号
connect(pushButton, SIGNAL(objectNameChanged(QString)),this, SIGNAL(windowTitelChan
ged(QString)));
三、手动创建信号和槽
1、信号的创建
signals://QT中信号关键字,只声明,不用定义
void sendMessages();
2、槽的创建
//槽函数的声明(之后还需要定义实现)
public slots:
void comeBackToClass();
//槽函数的定义
void Student::comeBackToClass()
{
qDebug()<<"comeBackToClass!!!"<<endl;
}
3、信号槽的连接
school = new School(this);
student = new Student(this);
connect(school,SIGNAL(sendMessages()),student,SLOT(comeBackToClass()));