1 Lambda表达式 1.1 []()mutable -> type {}组成 1.2 []中可以加 = & a &a … 推荐 使用 = 1.3 () 形参列表 1.4 {} 实现体 1.5 mutable可以修改按值传递进来的拷贝 1.6 -> type 代表lambda表达式返回值类型 [C++] 纯文本查看 复制代码
//[=] 函数体内可以使用Lambda所在作用范围内所有可见的局部变量
QPushButton * btn2 = new QPushButton("aaa",this);
QPushButton * btn3 = new QPushButton("aaa",this);
[=](){
btn2->setText("bbb");
btn3->setText("bbb");
}();
//最常用lambda使用 [=](){}
QPushButton * btn4 = new QPushButton("aaa",this);
btn4->move( 100, 0);
//当进行信号和槽连接时候,控件内会进入一个锁的状态
connect(btn4,&QPushButton::clicked,this,[=](){
btn4->setText("bbb");
});
//加上mutable修饰符后,可以修改按值传递进来的拷贝
QPushButton * myBtn = new QPushButton (this);
QPushButton * myBtn2 = new QPushButton (this);
myBtn2->move(100,100);
int m = 10;
connect(myBtn,&QPushButton::clicked,this,[m] () mutable { m = 20; qDebug() << m; });
connect(myBtn2,&QPushButton::clicked,this,[=] () { qDebug() << m; });
qDebug() << m;
//-> 返回值类型
int num = [=]()->int{
return 1000;
}();
qDebug() << "num = " << num ;
//点击按钮 关闭窗口
connect(btn4,&QPushButton::clicked,[=](){
//this->close();
st->treat("宫保鸡丁");
});
}
|