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

相关推荐
不想看见4041 小时前
QAbstractItemModel 自定义实现--Qt 模型 / 视图(MVC)
开发语言·qt·mvc
不想看见4041 小时前
Qt 事件循环与事件过滤器讲解【详细】
开发语言·数据库·qt
FL16238631291 小时前
基于yolov8+pyqt5实现的水尺图像识别与水深计算系统
开发语言·qt·yolo
sycmancia1 小时前
QT——GUI程序原理分析、Hello QT、调试的基本方法
开发语言·qt
问水っ2 小时前
Qt Creator快速入门 第三版 第6章 事件系统
开发语言·qt
不想看见4042 小时前
Qt+FFmpeg 极简播放器示例【音视频方向简单讲解】
qt·ffmpeg·音视频
FuckPatience3 小时前
QT 不允许使用不完整的类型
qt
四维碎片4 小时前
【Qt】 无边框窗口方案
开发语言·qt
sycmancia4 小时前
QT——Qt Creator工程介绍
开发语言·qt
娇娇yyyyyy4 小时前
QT编程(20): Qt QListWidget QTreeWidget介绍
数据库·qt·microsoft