【Qt】C++11 Lambda表达式

1. 举例

cpp 复制代码
	connect(ui->pushButton, &QPushButton::clicked, [=](bool checked){
	   //具体代码
	   qDebug() << "Hello" << checked;
   }); 

2. 详情

cpp 复制代码
//完整形式
[ capture ] ( params ) opt -> ret { body; };	
  • capture 是捕获列表
  • params 是参数表
  • opt 是函数选项
  • ret 是返回值类型
  • body是函数体。

3. []内的表达

  • [] 不捕获任何变量。
  • [&] 捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)。
  • [=] 捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)。
  • [=,&foo] 按值捕获外部作用域中所有变量,并按引用捕获 foo 变量。
  • [bar]按值捕获 bar 变量,同时不捕获其他变量。
  • [this] 捕获当前类中的 this 指针,让 lambda 表达式拥有和当前类成员函数同样的访问权限。如果已经使用了 & 或者 =,就默认添加此选项。捕获 this 的目的是可以在 lamda 中使用当前类的成员函数和成员变量。

4. 参考

【Qt笔记】 qt信号与槽的连接,附带说一下lambda和函数指针

相关推荐
六bring个六2 小时前
qtcreater配置opencv
c++·qt·opencv·计算机视觉·图形渲染·opengl
纯纯沙口3 小时前
Qt—多线程基础
开发语言·qt
yxc_inspire3 小时前
基于Qt的app开发第八天
开发语言·c++·qt
9527华安4 小时前
紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机
网络·qt·fpga开发·udp·紫光同创·ad7606
yxc_inspire5 小时前
基于Qt的app开发第七天
开发语言·c++·qt·app
dot to one7 小时前
Qt 中 QWidget涉及的常用核心属性介绍
开发语言·c++·qt
码农新猿类7 小时前
初入OpenCV
qt·opencv·计算机视觉
洛克希德马丁9 小时前
QLineEdit增加点击回显功能
c++·qt·ui
向日葵xyz10 小时前
Qt5与现代OpenGL学习(十一)OpenGL Widget鼠标控制直线旋转
开发语言·qt·学习
小宋加油啊12 小时前
Mac QT水平布局和垂直布局
开发语言·qt·macos