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

相关推荐
小灰灰搞电子16 小时前
Qt 实现魔法导航菜单源码分享
开发语言·qt
Quz17 小时前
QML SpinBox 基础与步长控制:可编辑输入与自定义步长
qt
隐积19 小时前
Qt魔法之旅 · 全系列课程导航
qt
海清河晏1111 天前
Qt 实战:信号与槽+事件系统
开发语言·c++·qt
郝学胜-神的一滴1 天前
Qt 高级编程 037:QSS按钮样式封神指南
开发语言·c++·qt·软件工程·用户界面
only-lucky1 天前
QML对话框控件
qt
郝学胜_神的一滴1 天前
Qt 高级编程 038:打造高颜值下拉菜单按钮
c++·qt
小灰灰搞电子1 天前
Qt 队列容器 QQueue 的详解与示例
开发语言·qt·qqueue
隐积1 天前
3.1.8.Qt容器大家族(4):QByteArray——字节数组
开发语言·qt