1、改进:按下按钮,触发
1.1、信号连接槽
按下按钮,调用ClassIsOver函数
QPushButton *btn = new QPushButton("下课",this);
//信号和槽:单击按钮,触发下课
connect(btn,&QPushButton::clicked,this,&Widget::ClassIsOver);
1.2、信号连接信号
按下按钮,触发老师饿的信号
//信号连接信号,无参
void (Teacher:: *hungry_signal_2)(void) = &Teacher::hungry;
void (Student:: *treat_slot_2)(void) = &Student::treat;
connect(ls,hungry_signal_2,ly,treat_slot_2);
connect(btn,&QPushButton::clicked,ls,hungry_signal_2);
2、三种触发关系
2.1、槽1→信号2→槽2
- connect建立“信号2→槽2”的连接。
- 写一个触发信号的函数
emit ls->hungry();
,调用。
最开始是这种方式,建立老师饿了学生请客的connect,然后写一个函数,函数里用emit触发老师饿了的信号。
2.2、信号1→槽1→信号2→信号1
- connect建立“信号2→槽2”的连接。
- 写一个触发信号的函数
emit ls->hungry();
- connect建立“信号1→槽1”的连接,按下按钮后自动触发老师饿了的信号。
上面的方式,程序一运行,就会触发老师饿了,现在是要按下按钮之后。
在上面的基础上再写一个connect,将按下按钮和触发老师饿了的函数连接。
2.3、信号1→信号2→槽2
- connect建立“信号2→槽2”的连接。
- connect建立“信号1→信号2”的连接。
这种方式是建立按钮按下和老师饿了的connect,然后是老师饿了和学生请客的connect.