信号和槽
// 写this,扔到对象树中,不用自己释放
ter = new MyTeacher(this);
st = new MyStudent(this);
// 连接
// 函数指针
void (MyTeacher:: *teacherSignal)(QString) = &MyTeacher::hungry;
void (MyStudent:: *studentSlot)(QString) = &MyStudent::eat;
connect(ter,teacherSignal,st,studentSlot);
// wantToEat();
QPushButton *btn = new QPushButton("吃饭",this);
btn->setParent(this);
// 信号连接信号
void (MyTeacher:: *tHungry)(void) = &MyTeacher::hungry;
void (MyStudent:: *sEat)(void) = &MyStudent::eat;
// 按钮传递信号给老师,让老师发出饿的信号
connect(btn,&QPushButton::clicked,ter,tHungry);
// 老师发送饿的信号给学生,学生处理信号,槽
connect(ter,tHungry,st,sEat);
// 信号可以连接信号
// 信号和槽可以断开
// 一个信号可以出发多个槽函数
// 多个信号可以连接同一个槽
// 信号参数的个数可以多余槽的个数,但是类型必须一一对应,反之不可以。
网友评论