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. vivo 大规模容器集群运维平台实践

    作者:来自 vivo 互联网服务器团队- Zhou Qi .Kong Manyu 容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点, ...

  2. Font-awesome失效恢复

    Font-awesome失效恢复策略 可能的原因有: 1.用了收费pro的版本,没充钱. Font Awesome 6 字体分为 Free 和 Pro 两个版本.Font Awesome 6 Free ...

  3. PostgreSQL psql 常用快捷命令

    psql 常用快捷命令 \l 显示所有数据库 \c 切换当前数据库,相当于 mysql 的 use 命令 \d 显示数据库中有哪些表 \d tb_name 显示表 tb_name 的定义 \d+ 显示 ...

  4. Linux下如何重启Oracle

    操作步骤 切换到oracle用户 su – oracle 通过sqlplus以管理员身份登录 sqlplus / as sysdba 然后执行 shutdown immediate 退出sqlplus ...

  5. Delphi 中拖动无边框窗口的5种方法

    1.MouseMove事件中加入: // ReleaseCapture; // Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入: // POST ...

  6. BUUCTF---childRSA(费马引理)

    题目 点击查看代码 from random import choice from Crypto.Util.number import isPrime, sieve_base as primes fro ...

  7. XWorker - 人机协同的共生系统

    这是XWorker的定位,让AI写的,因为动态模型和XWorker对AI本身也有特殊意义,所以让AI写也是可以的.部分是AI的幻觉,如(四.重塑产业实践),XWorker还没实现这些.之所以保留不动, ...

  8. 【电脑】重装Win10之后无法唤醒和正常关机(Y9000P 2022)

    问题: Y9000P 2022 改Windows10后经常关机关不全(自带键盘灯亮,电源指示灯不灭),这还不是最重要的,它一会儿不用到时间自动休眠后还经常唤醒不了 解决: 两个问题,总结一下: 一.关 ...

  9. ubuntu16.04安装SQLite

    主流的sqlite3,占用内存小,处理时速度快,跨平台. 几乎所有版本的 Linux 操作系统都附带 SQLite.所以,只要使用下面的命令来检查您的机器上是否已经安装了 SQLite. 一.检查是否 ...

  10. Unity/Auto Layout -- 理解Layout Elements(布局元素)