QT中的信号-槽比我们常用的callback到底牛在哪里?

本文探讨了QT中的信号槽机制与传统的回调函数的区别。信号槽提供了类型安全的事件处理方式,但相比回调稍慢。QT信号槽在定位连接、安全迭代和参数 marshalling 上存在一些开销,但这种延迟在实际应用中可忽略不计。与之相比,回调函数可能存在类型不安全和强耦合的问题。文章通过官方文档和简单示例展示了信号槽的使用和优势。
摘要由CSDN通过智能技术生成

这里写图片描述

刚刚接触qt, 发现有一个东西叫signal slot ,翻译为信号槽。

免责声明,我是一个beginner。Google了很多资料,很多文章写signal slot的。所以,这里只是把我个人觉得精彩的地方整理在一起,再偶尔加上一点点自己的看法而已。

看问题,再stackoverflow上看到这样一个提问,大意思是这样:
他们团队的qt项目中,一位资深的软件工程师运用了大量的c-style的回调函数,而没用使用qt中很精妙的signal slot机制。

回调有哪些缺点?
Callbacks have two fundamental flaws: Firstly, they are not type-safe. We can never be certain that the processing function will call the callback with the correct arguments. Secondly, the callback is strongly coupled to the processing function since the processing function must know which callback to call.

什么叫类型安全?
类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。

什么是信号、槽?
A signal is an observable event, or at least notification that the
event happened.
A slot is a potential observer, typically in the form a function to be
called.
You connect a signal to a slot to establish the observabl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一苇渡江694

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值