信号和槽在Qt里非常重要。
信号没有返回值,只需要声明,不需要实现,可以重载(就是可以带参数)
signals:
/*
* 信号特征:
* 1、没有返回值
* 2、只需要声明,不需要实现
* 3、可以有参数,可以重载
*/
void hungry();
//再来一个重载的版本,老师吃什么,需要点菜
void hungry(QString name);
槽函数
返回值void ,需要声明,也需要具体实现,
public slots:
/*
* 1、返回值void,需要声明,也需要实现
* 2、可以有参数,可以重载
*/
void treat();
//来一个槽函数的重载
void treat(QString footname);
函数指针和带参槽函数的写法
//函数指针可以指向函数地址,因为信号和槽发生了重载,所以我们需要定义函数指针
//出现重载要写函数指针,
void(teacher::*teacher_singal)(QString) = &teacher::hungry;
void (student::*student_slot)(QString) = &student::treat;
connect(teacher1, teacher_singal, student1, student_slot);
emit teacher1->hungry("宫保鸡丁");
函数指针能写在一起,上边的写法还可以这样写
connect(teacher1, static_cast<void (teacher::*)(QString)>(&teacher::hungry), student1, static_cast<void (student::*)(QString)>(&student::treat));
另外,也可以连接信号,通过一个信号去触发另外一个信号