新建一个工程,选择wiget,
在widget.h中添加一个成员变量
int m_count = 0;
在UI编辑器中添加3个按钮,
添加3个按钮响应:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// connect(ui->pushButton_3, &QPushButton::clicked, [=](){
// this->m_count += 10;
// } );
// connect(ui->pushButton_3, &QPushButton::clicked, [&](){
// this->m_count += 10;
// } );
connect(ui->pushButton_3, &QPushButton::clicked, [this](){
this->m_count += 10;
} );
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
auto func = [=]() {
m_count += 10;
};
func();
qDebug() << "m_count is:" << m_count;
}
void Widget::on_pushButton_2_clicked()
{
int count = 0;
auto func = [=]() mutable {
count += 10;
};
func();
qDebug() << "scope count is:" << count;
}
void Widget::on_pushButton_3_clicked()
{
qDebug() << "outer m_count is:" << m_count;
}
重新运行,单独点击按钮1,输出:
m_count is: 10
m_count is: 20
m_count is: 30
m_count is: 40
m_count is: 50
m_count is: 60
m_count is: 70
m_count is: 80
m_count is: 90
m_count is: 100
重新运行,单独点击按钮2,输出:
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
scope count is: 0
重新运行,单独点击按钮3,输出:
outer m_count is: 0
outer m_count is: 10
outer m_count is: 20
outer m_count is: 30
outer m_count is: 40
outer m_count is: 50
outer m_count is: 60
outer m_count is: 70
outer m_count is: 80
对于:
connect(ui->pushButton_3, &QPushButton::clicked, [=](){
this->m_count += 10;
} );
是因为通过值传递,将this捕获进去了,
this'->m_count += 10;
实际上是对this’进行操作
因为:this’ = this