【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和函数指针

相关推荐
AAA废品回收站陈师傅1 小时前
68常用控件_QGroupBox的使用
qt
明月醉窗台1 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
沉到海底去吧Go2 小时前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名
奥修的灵魂5 小时前
QT进阶之路:带命名空间的自定义控件在Qt设计器与qss中的使用技巧
qt·命名空间
笨笨马甲10 小时前
附加模块--Qt OpenGL模块功能及架构
开发语言·qt
uyeonashi13 小时前
【QT控件】输入类控件详解
开发语言·c++·qt
galaxy_strive1 天前
绘制饼图详细过程
开发语言·c++·qt
委婉待续1 天前
Qt的学习(一)
开发语言·qt·学习
笨笨马甲1 天前
Qt Quick Layout功能及架构
开发语言·qt
feiyangqingyun1 天前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181