Qt connect 中, SIGNAL,SLOT 与 lambda 对比

简单的信息就不说了,主要谈谈区别,首先结论是 推荐用 lambda 格式绑定信号槽,个人看法,有其他建议欢迎讨论,具体原因如下:

  1. SIGNAL,SLOTQt4 时期的方法, lambdaQt5 引入的。新的总比老的好 ~( ̄▽ ̄)~*
  2. SIGNAL(sig()) 等价于 "2sig()"SLOT(slot()) 等价于 "1slot()",他们是 Qt 的宏,只是一个 c 格式的字符串,无法在编译期对信号槽进行类型检查;而 lambda 采用 &Class::func 函数指针的形式进行信号槽绑定,可以在编译期进行类型检查( ̄︶ ̄)↗
  3. SIGNAL,SLOT 中函数参数不推荐使用 const, & 等修饰,不推荐参数间有空格,但 clang-formate 会自动在参数间加空格,所以总会有类似警告出现 o(≧口≦)o Signature is not normalized. Use checkUpdates(QUrl,QString) instead of checkUpdates(const QUrl &, const QString &) [clazy-connect-not-normalized]
  4. lambda 在绑定重载函数时,指定参数类型方式:qOverload<int>(&QButtonGroup::buttonClicked)QOverload<int>::of(&QButtonGroup::buttonClicked)
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值