qt中lambda表达式

什么是lambda

个人理解:没有函数名的函数

qt中使用基础

备注:都是在qt5中做的使用,我的qt版本是qt5.11.3

pro文件中
config+=c++11

常见的lambda表达式使用(延时执行操作)

举例:通过信号槽将t和tmpImage两个参数传进lambda表达式中,从而实现延时删除文件
方法一:

    QString tmpImg ="~/Picture/xx.png"
QTimer *t = new QTimer(this);
t->setSingleShot(true);
connect(t, &QTimer::timeout, this, [t, tmpImg] {
QFile(tmpImg).remove();
t->deleteLater();
});
t->start(1000);

方法二:更简单的lambda方法

    QString tmpImg ="~/Picture/xx.png"
QTimer::singleShot(1000,[tmpImg]{
QFile(tmpImg).remove();
});

常见的lambda表达式使用(信号槽)

    //Qt不传递参数lambda
connect(this,&lambdaTest::testSingal,this,[=]{
qDebug()<<QString("test");
});
//Qt带传递参数lambda
connect(this,&lambdaTest::testSingal,this,[=](QString path){
qDebug()<<path;
});
//Qt5风格
connect(this,&lambdaTest::testSingal,this,&lambdaTest::testSlot);
//Qt4风格
connect(this,SIGNAL(testSingal(QString)),this,SLOT(testSlot(QString))); QString path="test";
emit testSingal(path); void lambdaTest::testSlot(QString path)
{
qDebug()<<path;
}

如果要加上第五个参数,也是没有问题的

    //Qt不传递参数lambda
connect(this,&lambdaTest::testSingal,this,[=]{
qDebug()<<QString("test");
},Qt::QueuedConnection);
//Qt带传递参数lambda
connect(this,&lambdaTest::testSingal,this,[=](QString path){
qDebug()<<path;
},Qt::QueuedConnection);
//Qt5风格
connect(this,&lambdaTest::testSingal,this,&lambdaTest::testSlot,Qt::QueuedConnection);
//Qt4风格
connect(this,SIGNAL(testSingal(QString)),this,SLOT(testSlot(QString)),Qt::QueuedConnection); QString path="test";
emit testSingal(path);

常见的lambda表达式使用(qt线程)

    QThread * th=QThread::create([=]{
qDebug()<<"test";
});
connect(th,&QThread::destroyed,th,&QThread::deleteLater);
th->start();

qt中常用lambda表达式的更多相关文章

  1. Qt5中使用lambda表达式

    c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...

  2. Qt5中的lambda表达式和使用lambda来写connect

    c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...

  3. 你知道C#中的Lambda表达式的演化过程吗

    你知道C#中的Lambda表达式的演化过程吗? 阅读目录 委托的使用 匿名方法 Func和Action Lambda的诞生 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西 ...

  4. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  5. C++11中的Lambda表达式

    原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...

  6. Lambda 表达式,Java中应用Lambda 表达式

    一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...

  7. 在Linq to sql 和 Entity framework 中使用lambda表达式实现left join

    在Linq to sql 和 Entity framework 中使用lambda表达式实现left join 我们知道lambda表达式在Linq to sql 和 Entity framework ...

  8. Android中使用Lambda表达式开发

    参考文章:ImportNew 要在Android开发中使用lambda表达式,首先需要在 Module 的build.gradle中加入: compileOptions { targetCompati ...

  9. 【转】你知道C#中的Lambda表达式的演化过程吗?

    [转]你知道C#中的Lambda表达式的演化过程吗? 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传 ...

  10. 编写高质量代码改善C#程序的157个建议——建议27:在查询中使用Lambda表达式

    建议27:在查询中使用Lambda表达式 LINQ实际上是基于扩展方法和Lambda表达式的.任何LINQ查询都能通过扩展方法的方式来代替. var personWithCompanyList = f ...

随机推荐

  1. Vite项目入口文件

    官方文档:https://cn.vitejs.dev/guide/#index-html-and-project-root

  2. idea src/main/webapp无法识别为web文件夹

    整理项目的时候发现,在项目是src/main/webapp没有被自动识别为web文件夹. 1.确认你的项目已经转换为maven项目了. 2.确认你的项目的pom.xml文件有配置(只有配置了包类型,才 ...

  3. Django实战项目-学习任务系统-查询列表分页显示

    接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了. 接着优化查询列表分页显示功能,有很多菜单功能都有查询列表显示页面情况,如果数据量多,不分页显示的话,页面展示效果就不太好. 本次 ...

  4. 开源组件DockerFIle老是Build失败,如何解决

    推荐把外网地址替换为国内高速镜像 # 替换源地址 http://dl-cdn.alpinelinux.org/alpine === https://mirrors.aliyun.com/alpine ...

  5. 超简单电脑本地部署deepseek,另附”一键使用脚本“撰写与联网使用方法

    在电脑上部署deepseek,总共分三步 1.打开ollama官网点击Download按钮 2.在ollama官网搜索deepseek-r1模型,选择对应规模,并复制ollama命令,比如这里,我的o ...

  6. Nginx 查看配置文件路径

    通过测试信息来间接查看 #测试nginx.conf是否正确 nginx -t #输入此命令,通常会输出如下信息 nginx: the configuration file /etc/nginx/ngi ...

  7. lombok用法

    加入 maven 依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...

  8. 『Plotly实战指南』--面积图绘制与应用

    在数据可视化领域,面积图是一种强大而直观的工具,它通过填充线条与坐标轴之间的区域来量化数据大小, 从而帮助我们清晰地展示数据的总量.趋势变化以及不同类别之间的对比. 无论是分析随时间变化的累积量,还是 ...

  9. 在线带壳屏幕截图工具推荐:MockUPhone

    简介 MockUPhone是一款免费的在线工具,用于生成带壳屏幕截图.这款工具主要面向开发者.设计师以及产品经理等人群,他们可以利用MockUPhone将UI设计或屏幕截图展示在各种不同类型的设备模型 ...

  10. 从 Excel 到你的表格应用:数据验证功能的嵌入实践指南

    前言: 随着信息化的不断发展,传统表格软件已无法满足用户对便携性.数据自动化管理等日益复杂的要求,将电子表格与其他系统结合.开发自己的表格应用已成为愈发火热的趋势. 然而,当企业需要将 Excel 的 ...