Qt 与 lamdb

lamdba用处

Qt5可以使用lamdba表达式,有一些槽很简短,如果写一个新的槽函数就比较麻烦且浪费时间,这种就可以使用lamdba表达式

    QPushButton *cancelButton = new QPushButton("取消");
    connect(cancelButton, &QPushButton::clicked, [dlg]{
           dlg->close();
        });

上图很简单的例子,取消功能,就一句话,如果写一个槽函数比较浪费时间和空间,所以可以使用lamdba表达式;

使用方法

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

  • [capture]捕获列表,如果想使用父作用域的变量,必须要先捕获,再使用,如果不捕捉可以直接使用[]里面不使用东西
    • [dlg],[&dlg]一个是捕捉的正常变量,一个捕捉的是引用
    • [=] [&]前者捕捉所有父作用域的变量,后者为引用捕捉.两者捕捉的皆包含this指针
    • [this]捕捉this指针
  • (parameters)参数列表,和正常的函数一样,如果无参数可省略括号
  • mutablemutable修饰符。默认情况下,Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)(没用过,所以copy来的);
  • ->return-type返回类型,如果不用则可省略
  • {statement}函数体
//copy了一段代码,可以注意下返回的类型
#include<iostream>
using namespace std;

typedef enum
{ 
add = 0,
sub,
mul,
divi
}type;

int main()
{ 
int a = 10;
int b = 20;

auto func = [=](type i)->int {
switch (i)
{
case add:
return a + b;
case sub:
return a - b;
case mul:
return a * b;
case divi:
return a / b;
}
};

cout<<func(add)<<endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值