Qt总结: 信号与槽

     Qt元对象系统提供了一种部件之间交互的机制,即信号与槽 —— SIGNAL & SLOT。

     简单的解释就是:当部件1需要使部件2产生动作时,或者说部件2需要根据部件1的需求来产生动作时,部件1就会发送一个信号给部件2,当部件2接收到该信号就会产生相应的动作。值得注意的是:信号必须与对应的动作进行关联才能使用。

     其大致原理就像C/C++中的回调函数,但是回调函数的性能会更加高效。因为它不需要判断信号的接收对象、参数规则,不需要遍历所有关联的信号与槽,在多线程的环境中也不需要排队等待。但是对于创建堆对象的new操作和删除堆对象的delete操作相比,信号与槽的运行代价只是其一小部分,对于信号与槽机制产生的性能损耗可以忽略不计。

     以上的描述之所以不直接使用“槽”,而使用“动作”的原因是,信号是可以不用与槽关联,也可以与另一个信号进行关联。

     此外,一个信号可以与多个槽关联,一个槽也可以与多个信号关联。

     值得注意的是:信号与槽的参数是有限制的。

     首先,参数类型必须对应。

     其次,槽函数的参数可以少于信号的参数个数。

     最后,槽函数的参数不允许超过信号的参数个数。

     否则,编译器会报错的。


PS:  以上言论纯属个人见解,如有错误,请留言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值