Qt 使用lambda表达式
常见的Lanbda表达式的结构如下:
[捕获](参数列表){函数体}
捕获列表:
- [&] 表引用形式捕获当前作用域的全部自动存储持续性变量
- [=] 表示以传值形式捕获当前作用域是全部自动储存持续性变量,
- [a, &b] 以传值形式捕获变量a, 以引用形式捕获变量 b
- [a, &] 以传值形式捕获变量a ,以引用形式捕获当前作用域其它的自动储存持续性变量
- [this] 以传值形式捕获this指针
- [] 什么也不捕获
1:connect函数中使用
捕获列表为[ = ] 时函数体内不能使用this等函数体外定义的指针,因为[ = ]是传值的形式捕获当前作用域的变量
QPushButton * btn = new QPushButton("btn");
connect(btn, &QPushButton::clicked, this, [ = ](bool state)
{
qDebug()<<"lambda text";
});
2:匿名函数
auto fun = [=](const QString &text)
{
qDebug()<<"lanbda text"<< text;
};
fun("hello word!!!");