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

相关推荐
LaoWaiHang6 小时前
关于Qt中鼠标左键事件被子控件截留的处理
qt
初阳78510 小时前
【基于Qt5仿音乐播放器(一)】——项目准备
qt·1024程序员节
kaixin_learn_qt_ing14 小时前
Qt开发工程师
qt
ShineWinsu1 天前
对于Qt:信号与槽的解析
c++·qt·gui·lambda·信号·信号与槽·槽函数
努力实干2 天前
Qt/C++ 模块化设计与工程组织
开发语言·c++·qt
Lhan.zzZ2 天前
Qt:动态库模块框架设计
开发语言·c++·qt
qq_401700413 天前
TCP 长连接、心跳包与断线自动重连设计:工业级通信的“不死鸟”架构
网络·qt·tcp/ip
dyxal3 天前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
金色熊族3 天前
在Qt中使用asan检测内存泄漏(一)
linux·qt·asan
前行中的小猪3 天前
Qt 5 踩坑实录:多显示器跨屏拖拽导致窗口异常放大与 setGeometry 报错的深度解析与根治
qt·多显示器·高分辨率·多屏幕