zl程序教程

您现在的位置是:首页 >  工具

当前栏目

【QT】QT中使用Lambda表达式

Qt 表达式 lambda 使用
2023-09-27 14:25:56 时间
Lambda表达式

Qt5中有全新的信号与槽语法,在Qt4基础上提高了信号与槽的灵活性,允许使用任意函数作为槽函数。但如果想更好地执行异步代码,来函数名都不想定义,则可以通过Lambda表达式来达到这个目的。

Lambda表达式是C++11新增加的特性。

Lambda表达式的引入符

引入符说明[]不捕获任何变量[=]以传值的方式捕获所有外部变量[ ]以传引用的方式捕获所有外部变量[x, y]x以传值的方式捕获,y以传引用的方式捕获[=, x]x以传引用的方式捕获,其余变量以传值的方式捕获[ ,x]x以传值的方式捕获,其余变量以传引用的方式捕获

格式:

[捕获列表] (参数列表-可以省略) (函数选项-可以省略) - (返回值类型-可以省略){函数体}

详见—链接

示例1:

收到拒绝文件信号,执行的槽方法功能就是直接返回,没有进行任何的外部变量捕获。

connect(recvFile, ReceiveFile::refuseFile(),[](){

 return;

 });

示例2:

传值方式捕获外部变量在函数体内部使用

connect(label, QClickLabel::clicked,[row,column,colorList]{

 NotifyManager::getInstance()- notifyOtherWindowChangeSkin(colorList.at(row *4 +column));

})

示例3:
传址方式捕获

使用this的updateSearchStyle()成员函数

connect(NotifyManager::getInstance(), NotifyManager::signalSkinChanged,[this]() {

 updateSearchStyle();

});

注意事项:
捕获列表不允许变量重复传递,如[=,a]则以传值方式捕获所有外部变量,又重复捕获a,就会报错。


Qt QStandardItemModel(2.超级详细函数) 简介: 本文详细的介绍了TextEdit控件的各种操作,例如:获取内容、输入控件字符、保持在最后一行添加(自动滚屏)、定时关闭、添加数据换行、向鼠标位置插入一行字符、设置字体颜色属性等操作。 本系列QT全面详解文章目前共有十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。
Qt QStandardItemModel(1.超级详细用法) 本文详细的介绍了TextEdit控件的各种操作,例如:获取内容、输入控件字符、保持在最后一行添加(自动滚屏)、定时关闭、添加数据换行、向鼠标位置插入一行字符、设置字体颜色属性等操作。 本系列QT全面详解文章目前共有十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。
Qt6-Qt5代码移植到Qt6 尝试下Qt5的代码是否可以正常在Qt6上编译通过,使用的我网易云代码,这里测试的时候我先添加了5.12的版本进行测试没有问题,下面将切换到6.0的环境试一下。