QT入门--信号和槽
为了使得按钮点击发挥作用
如点击按钮关闭窗口
按钮 -> 点击 -> 窗口 -> 关闭窗口
connect(信号的发出者,发出的具体信号,信号的接收者,信号的处理)
信号槽的优点:松散耦合,信号发送端和接收端本身没有关联的,通过connect关联在一起
connect(btn,&QPushButton::clicked,this,&QWidget::close);
自定义信号和槽
自定义槽函数,需要声明,也需要实现
自定义信号,返回值为void,只需要声明,不需要实现,可以有参数,可以重载。
自定义信号需要写到signal下,自定义槽函数写到public下即可
此时如果需要进行连接,我们需要指定地址来避免二义性
需要定义函数指针,并且声明作用域
将string转为char *
name.toUtf_8().data();
简略写法创建按钮
QPushButton* myt = new QPushButton("下课",this);
也可以用信号连接信号,这样前面第一个信号发出就会传递到最后一个接收者
断开信号连接
使用disconnect
note:
一个信号可以连接多个槽函数
多个信号可以连接一个槽函数
信号和槽函数的参数必须一一匹配
信号的参数要多余槽函数的参数,但是类型要一一对应
Lambda表达式
[](){}()
第一个内部:
空:没有使用任何函数对象参数
&:引用传递方式,可以使用Lambda所在局部范围内的所有局部变量
=:值传递方式,可以使用Lambda所在局部范围内的所有局部变量
变量:将变量以值传递方式传入
&a:引用传递
第二个内部:重载参数
第三个内部:命令代码
第四个代表执行
mutable:可以修改值传递拷贝,放在一二之间