QT基础-lambda表达式
值、引用、this传递
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
int b;
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QPushButton *btn;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
b = 20;
int aa = 10;
ui->setupUi(this);
btn = new QPushButton();
btn->setParent(this);
btn->move(40,50);
btn->resize(140,150);
btn->setText("新年好");
// [=] 表示 lambda表达式内部可以获取外部所有局部变量,
// 以及类中所有的成员的值;
connect(btn,&QPushButton::clicked,this,[=]{
qDebug()<<"新年好啊";
btn->setText("虎虎生威");
// [this]时,aa是局部变量,不会被传入
// [&]时,会将外部局部变量以'引用'的方式传入,
// [&]时,类中成员不会传入
qDebug()<<aa;
// [this]将类中一切成员传入,局部变量不会传入
qDebug()<<b;
});
}
MainWindow::~MainWindow()
{
delete ui;
}