Qt基础学习-lambda表达式

🌈大家好!本篇文章将介绍Qt基础中的lambda表达式😇。由于博主水平有限,如有错误,欢迎大家指正!



✨Qt基础学习-lambda表达式✨

🍀lambda表达式:

Lambda表达式, 匿名函数对象,其可以理解为没有函数名的函数,是C++11增加的新特性。
在Qt中,Lambda表达式常和信号一起使用,非常方便,需要在项目文件中添加: CONFIG += C++11
首先看一下Lambda表达式的基本构成:

[capture](parameters) mutable ->return-type
{
statement
}

[函数对象参数] (操作符重载函数参数)mutable ->返回值{函数体}

1️⃣ 🌲函数对象参数🌲
[],标识一个Lambda表达式的开始,不能省略。函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使用Lambda之前的Lambda所在范围内可见的局部变量(包括Lambda所在类的this)。
函数对象参数有以下形式:

函数对象参数说明
[]不使用任何变量
[=]以传值的方式使用所有外部变量
[&]以传引用的方式使用所有外部变量
[x]将x以传值的方式使用。使用时,函数体内不能修改传递进来的x的拷贝(默认情况下函数是const),添加mutable修饰符可对传递进来的x的拷贝进行修改
[x,&y]x以传值的方式使用,y以传引用的方式使用
[=,&x]x以传引用的方式使用,其余变量以传值的方式使用
[&,x]x以传值的方式使用,其余变量以传引用的方式使用

2️⃣🌲 操作符重载函数参数🌲
标识重载的()操作符的参数,没有参数时,这部分可以省略。
参数可以通过按值(如:(a,b))和按引用(如:(&a,&b))两种方式进行传递。

3️⃣🌲 mutable🌲
mutable声明,这部分可以省略。

4️⃣🌲返回值🌲
->返回值类型,标识函数返回值的类型,当返回值为void,或者函数体中只有一处return的地方(此时编译器可以自动推断出返回值类型)时,这部分可以省略。

5️⃣ 🌲{函数体}🌲
{},标识函数的实现,这部分不能省略,但函数体可以为空。

☀️应用实例:

widget.h:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

widget.cpp:

#include "widget.h"
#include <QPushButton>
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent){
    //lambda表达式
    QPushButton *btn2 = new QPushButton;
    btn2->move(0,0);
    btn2->setParent(this);
    btn2->setText("aaa");
 }

main.cpp:

#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

运行后效果如下:
在这里插入图片描述widget.cpp中添加lambda表达式,

   [=](){
       btn2->setText("bbb");
   }();

可将按钮标签修改为:
在这里插入图片描述

🐾总结

🌈刚开始学Qt,先接触到信号和槽,然后就学习Lambda表达式,其常和信号一起使用,非常方便,后续随着Qt的继续学习,还会继续记录自己觉得比较有趣的内容。
希望这篇文章能给正在学习Qt的小伙伴们一些帮助✊✊。
🚀🚀觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦🙏 🙏🙌 !

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君莫笑lucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值