0
点赞
收藏
分享

微信扫一扫

QT基础-lambda表达式

一条咸鱼的干货 2022-02-01 阅读 42

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;
}
举报

相关推荐

0 条评论