自定义信号hungry
signals://自定义信号
//返回值为void,只需要声明,不需要实现,可有参,可重载
void hungry();
void hungry(QString foodName);
自定义槽函数treat,此处有参构造涉及类型转换,防止打印引号
void Student::treat()
{
qDebug()<<"请老师吃饭";
}
void Student::treat(QString foodName)
{
//QString -> char* 先转成 QBYteArray( toUtf8() )再转char*()
//引号便不会打印
qDebug()<<"请老师吃饭,老师要吃:"<<foodName.toUtf8().data();
}
通过函数指针,防止有参函数和无参函数的调用混乱
//函数指针->函数地址
void(Teacher::*teacherSignal1)(void) = &Teacher::hungry;
void(Student::*studentSlot1)(void) = &Student::treat;
//老师饿了 学生请客的连接
connect(zt,teacherSignal1,st,studentSlot1);
void(Teacher::*teacherSignal2)(QString) = &Teacher::hungry;
void(Student::*studentSlot2)(QString) = &Student::treat;
//连接有参的 信号和槽
connect(zt,teacherSignal2,st,studentSlot2);
classIsOver();
上面两个函数指针,指向两个无参函数
下面两个函数指针,指向重载的参数为QString的有参函数