[Qt/C++]关于connect中使用lambda表达式“no matching function for call to...“的问题

本文介绍了在Qt编程中使用Lambda表达式解决`connect`时遇到的"no matching function for call to..."问题。重点指出Qt5开始支持Lambda表达式,提供了一种新的信号槽连接方式。对比了Qt4的老版本写法,讨论了Lambda表达式的优点,包括编译时的参数类型检查。同时,提到了Lambda表达式的构成,并推荐了相关教程资源。
摘要由CSDN通过智能技术生成

*初学过程遇到的问题 如有理解错误的地方 欢迎大佬们指正

先说结论:

Qt5才支持在connect中使用Lambda表达式

 就是说 这种写法才可以

connect(this,&testMain::testsignal,[]{});

下边这样Qt4等老版本中connect的写法就会报错

connect(this,SIGNAL(testsignal()),[ ]{ });


下边是一些简单的笔记:

首先我们知道connect的基本格式

connect(sender, signal , receiver, slot);

其中信号和槽可以大致分为两种写法 以Http请求常用的请求结束信号举个栗子:

一种是写作函数地址的形式:

这种写法的优点在于 编译器会对信号和槽的参数类型进行检测

当信号或者槽有重载时 编译器会报错 需要使用函数指针来指向具体的某个函数

connect(baseManager,&QNetworkAccessManager::finished,this,&HttpBaseClientQObj::replyFinished);

另一种是Qt4及更早版本的写法:

这种写法可以直观的看到信号和槽中的参数类型

但缺点就是编译器不会对参数类型做出检测 就是说

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值