信号带参数-lambda表达式
信号带参数
- 信号可以以重载的方式带参数
void mySignal();
void mySignal(int, QString);
- 信号与槽函数连接时应予以区分
void (SubWidget::*funSignal)() = &SubWidget::mySignal;//不带参数
void (SubWidget::*testSignal)(int, QString) = &SubWidget::mySignal;//带参数
//不同的信号处理槽函数
connect(&subWin, funSignal, this, &MainWidget::dealSub);
connect(&subWin, testSignal, this, &MainWidget::dealSlot);
Qdebug
#include <QDebug>
int a;
QString str;
qDebug() << a << str.toUtf8().data();
lambda表达式
可以使用lambda表达式代替connect中的槽函数,这样就不需要再单独去定义槽函数了
CONFIG += C++11
connect(b, &QPushButton::clicked,
// = :把外部所有局部变量和类中所有成员以值传递方式进行传递
// this: 把类中所有成员以值传递的方式进行传递
// & : 把外部所有局部变量,以引用的方式进行传递
// mutable:加上此关键字 可以在值传递方式的同时改变具体值
[=]() mutable
{
qDebug() << a;
}
);