ITKeyword,专注技术干货聚合推荐

注册 | 登录

QT信号槽多次连接引起的错误修改

inter_peng 分享于 2016-05-16

推荐:Qt的信号与槽的工作机制

因英语水平有限,但是发现该文讲的很是精彩,故转载翻译过来,如有疏漏错误的地方请多多指正 原文出处:http://woboq.com/blog/how-qt-signals-slots-work.html

2020腾讯云“6.18”活动开始了!!!(巨大优惠重现!4核8G,5M带宽 1999元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1059

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

本文由Markdown语法编辑器编辑完成。

1. 问题描述:

在有关QT的编程中,遇到了这样的问题,当由于对QT信号槽连接机制的不理解,导致了对同一个信号槽进行了两次或以上的连接,结果在之后的代码调试中便发生了与自己期望不同的结果。通过在网络上查找相关的解答,得出了解答。原因是QT的同一个信号和槽函数是可以进行多次连接的,但是之后,当触发该信号的时候,槽函数便会被触发N次。N即是该信号和槽函数连接的次数。
具体的解答可以从以下Stackoverflow中查阅。
http://stackoverflow.com/questions/3530590/qt-signals-and-slot-connected-twice-what-happens

鉴于QT的信号槽机制是非常重要的特性。以下对QT的信号槽机制进行简要的介绍:

2. QT的信号槽机制:

QT信号槽(Signal-Slot)机制是QT最重要也是最基础的特性之一。通过信号槽,能够使Qt的各个组件在不知道对方的情形下互相进行通讯,这样便实现了类之间的最大程度的解耦。
关于QT的信号槽机制,可以阅读以下几篇博客文章:

推荐:QT中关于信号与槽机制的实现原理

  转自:http://blog.csdn.net/prochsh/archive/2009/10/14/4669346.aspx 一: [ 每个对象 ] 都有一个相应的纪录该对象的 [ 元对象 ] 关于元对象的类: QMetaObj

(1) Qt学习之路(9):深入了解信号槽
http://devbean.blog.51cto.com/448512/199461

(2) Qt信号槽的实现
http://www.devbean.net/2012/12/how-qt-signals-and-slots-work/

信号槽连接的语句原型为:
QT 4.8.3:
Connect(sender, SIGNAL(signal), receiver, SLOT(slot));
QT 5.1.0:
Connect(sender, &Class::signal, receiver, &Class::slot);

关于Qt的信号槽的几个特性:
1. 一个信号可以同时和多个槽函数连接;
2. 多个信号可以连接到一个槽函数上;
3. 一个信号可以连接到另外的一个信号;
4. 信号槽函数既可以连接,也可以主动断开连接;
5. 信号和信号,信号和槽函数在连接的时候,可以传递参数,参数的类型和个数必须对应。

参考链接:
http://stackoverflow.com/questions/3530590/qt-signals-and-slot-connected-twice-what-happens

推荐:Qt信号槽机制与Q_OBJECT

当你在自己重载或者子类化的过程中,如果你要使用信号槽机制的需求; 添加上Q_OBJECT; 那么你很可能再编译就出错: Undefined reference to vtable for in func

本文由Markdown语法编辑器编辑完成。 1. 问题描述: 在有关QT的编程中,遇到了这样的问题,当由于对QT信号槽连接机制的不理解,导致了对同一个信号槽进行了两次或以上的连接,结果在之后的代码

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。