1.当lambda表达式中使用[=](){}时,为按值拷贝作用范围的局部变量,默认不可修改按值传进来的拷贝。
如图:不加mutable时报错,a不可改变
加mutable后可以改变a值,但是时修改的拷贝对象,connect上边的a值未修改。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
int a = 10;
connect(ui->pushButton,&QPushButton::clicked,[=]()mutable{
a += 2;
qDebug() << "按钮1下的a:" << a;
});
connect(ui->pushButton_2,&QPushButton::clicked,[=]()mutable{
qDebug() << "按钮2下的a:" << a;
});
}
如下图,为验证结果: