*初学过程遇到的问题 如有理解错误的地方 欢迎大佬们指正
先说结论:
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及更早版本的写法:
这种写法可以直观的看到信号和槽中的参数类型
但缺点就是编译器不会对参数类型做出检测 就是说