设为首页收藏本站 |天气与日历| 2025-04-20 星期日 06:10:00 乙巳(蛇)年 三月廿三 卯时 谷雨
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 184|回复: 0

Lambda表达式

[复制链接]

954

主题

954

帖子

3875

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3875
发表于 2022-1-29 17:29:10 | 显示全部楼层 |阅读模式
1 Lambda表达式
1.1 []()mutable  -> type {}组成
1.2 []中可以加 =  &  a  &a 推荐 使用 =
1.3 () 形参列表
1.4 {} 实现体
1.5 mutable可以修改按值传递进来的拷贝
1.6 -> type 代表lambda表达式返回值类型
[C++] 纯文本查看 复制代码
    //[=] 函数体内可以使用Lambda所在作用范围内所有可见的局部变量
    QPushButton * btn2 = new QPushButton("aaa",this);
    QPushButton * btn3 = new QPushButton("aaa",this);
    [=](){
        btn2->setText("bbb");
        btn3->setText("bbb");
    }();

    //最常用lambda使用 [=](){}
    QPushButton * btn4 = new QPushButton("aaa",this);
    btn4->move( 100, 0);

    //当进行信号和槽连接时候,控件内会进入一个锁的状态
    connect(btn4,&QPushButton::clicked,this,[=](){
        btn4->setText("bbb");
    });


   //加上mutable修饰符后,可以修改按值传递进来的拷贝
   QPushButton * myBtn = new QPushButton (this);
   QPushButton * myBtn2 = new QPushButton (this);
   myBtn2->move(100,100);
   int m = 10;

   connect(myBtn,&QPushButton::clicked,this,[m] () mutable { m = 20; qDebug() << m; });

   connect(myBtn2,&QPushButton::clicked,this,[=] ()  { qDebug() << m; });

   qDebug() << m;


   //-> 返回值类型
   int num = [=]()->int{
        return 1000;
   }();
   qDebug() << "num = " << num ;


   //点击按钮 关闭窗口
   connect(btn4,&QPushButton::clicked,[=](){
        //this->close();
        st->treat("宫保鸡丁");
   });

}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-4-20 06:10 , Processed in 0.082492 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表