接上一篇,只是记录重载需要修改的部分。
这下知道上一篇的疑问是怎么回事了,哈哈。
1、teacher.h
Teacher类的hungry信号,再写一个带参的。
signals:
void hungry(); //hungry信号
void hungry(QString food_name); //hungry信号的重载
2、student.h & student.cpp
Student类的treat槽函数,也要写一个带参的,参数类型和hungry里的一致,包括声明和实现两个部分。
public slots:
void treat(); //treat槽函数
void treat(QString food_name); //treat槽函数的重载
void Student::treat(QString food_name) //treat槽函数的重载
{
qDebug() << "请客吃饭,吃:" << food_name;
}
3、connect
需要先定义两个函数指针,指向刚才重载的函数,否则编译的时候不知道是哪一个,会报错的。
//定义函数指针,指向重载的函数
void (Teacher:: *hungry_signal)(QString) = &Teacher::hungry;
void (Student:: *treat_slot)(QString) = &Student::treat;
connect(ls,hungry_signal,ly,treat_slot);
触发信号的时候,emit的也记得改成带参的。
emit ls->hungry("宫保鸡丁");