qt中常用lambda表达式
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表达式的更多相关文章
- Qt5中使用lambda表达式
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...
- Qt5中的lambda表达式和使用lambda来写connect
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...
- 你知道C#中的Lambda表达式的演化过程吗
你知道C#中的Lambda表达式的演化过程吗? 阅读目录 委托的使用 匿名方法 Func和Action Lambda的诞生 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西 ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- C++11中的Lambda表达式
原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...
- Lambda 表达式,Java中应用Lambda 表达式
一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...
- 在Linq to sql 和 Entity framework 中使用lambda表达式实现left join
在Linq to sql 和 Entity framework 中使用lambda表达式实现left join 我们知道lambda表达式在Linq to sql 和 Entity framework ...
- Android中使用Lambda表达式开发
参考文章:ImportNew 要在Android开发中使用lambda表达式,首先需要在 Module 的build.gradle中加入: compileOptions { targetCompati ...
- 【转】你知道C#中的Lambda表达式的演化过程吗?
[转]你知道C#中的Lambda表达式的演化过程吗? 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传 ...
- 编写高质量代码改善C#程序的157个建议——建议27:在查询中使用Lambda表达式
建议27:在查询中使用Lambda表达式 LINQ实际上是基于扩展方法和Lambda表达式的.任何LINQ查询都能通过扩展方法的方式来代替. var personWithCompanyList = f ...
随机推荐
- vivo 大规模容器集群运维平台实践
作者:来自 vivo 互联网服务器团队- Zhou Qi .Kong Manyu 容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点, ...
- Font-awesome失效恢复
Font-awesome失效恢复策略 可能的原因有: 1.用了收费pro的版本,没充钱. Font Awesome 6 字体分为 Free 和 Pro 两个版本.Font Awesome 6 Free ...
- PostgreSQL psql 常用快捷命令
psql 常用快捷命令 \l 显示所有数据库 \c 切换当前数据库,相当于 mysql 的 use 命令 \d 显示数据库中有哪些表 \d tb_name 显示表 tb_name 的定义 \d+ 显示 ...
- Linux下如何重启Oracle
操作步骤 切换到oracle用户 su – oracle 通过sqlplus以管理员身份登录 sqlplus / as sysdba 然后执行 shutdown immediate 退出sqlplus ...
- Delphi 中拖动无边框窗口的5种方法
1.MouseMove事件中加入: // ReleaseCapture; // Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入: // POST ...
- BUUCTF---childRSA(费马引理)
题目 点击查看代码 from random import choice from Crypto.Util.number import isPrime, sieve_base as primes fro ...
- XWorker - 人机协同的共生系统
这是XWorker的定位,让AI写的,因为动态模型和XWorker对AI本身也有特殊意义,所以让AI写也是可以的.部分是AI的幻觉,如(四.重塑产业实践),XWorker还没实现这些.之所以保留不动, ...
- 【电脑】重装Win10之后无法唤醒和正常关机(Y9000P 2022)
问题: Y9000P 2022 改Windows10后经常关机关不全(自带键盘灯亮,电源指示灯不灭),这还不是最重要的,它一会儿不用到时间自动休眠后还经常唤醒不了 解决: 两个问题,总结一下: 一.关 ...
- ubuntu16.04安装SQLite
主流的sqlite3,占用内存小,处理时速度快,跨平台. 几乎所有版本的 Linux 操作系统都附带 SQLite.所以,只要使用下面的命令来检查您的机器上是否已经安装了 SQLite. 一.检查是否 ...
- Unity/Auto Layout -- 理解Layout Elements(布局元素)