信号和槽在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));
另外,也可以连接信号,通过一个信号去触发另外一个信号
本文详细介绍了Qt中的信号和槽机制,信号无返回值,只需声明,可重载;槽函数则需要实现,也可带参数并重载。通过函数指针,可以实现特定信号触发特定槽函数的功能,同时展示了如何使用静态类型转换进行连接。此外,还提到了信号之间的连接,以实现一种信号触发另一信号的机制。
500

被折叠的 条评论
为什么被折叠?



