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

来源:互联网 发布:17%退税率出口退税算法 编辑:程序博客网 时间:2024/05/19 03:28

本文由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的信号槽机制,可以阅读以下几篇博客文章:

(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

0 0
原创粉丝点击