如果相同的信号和插槽连接两次会发生什么?
该机制是如何处理的?
答案 0 :(得分:48)
几个星期前,我们有一名实习生不小心将一个信号连接到一个插槽。这个想法是,在一个条件下,你有一个插槽连接到信号,在另一个条件下,你将断开它。当你改变模式时,你会做适当的工作。
嗯,他忘了在适当的时候断开连接。因此,每次更改模式时,都会与插槽建立新连接。
最终结果? 1连接== 1呼叫插槽。 2个连接= = 2个插槽。 3个连接== 3次调用插槽等。这些调用“同时”发生(我知道实际上他们没有,因为他们在同一个事件线程上,但我的意思是所有调用都是连续处理的。)
正如@Job在他的一条评论中指出的那样(他值得信任,所以请不要为我的工作投票),Qt::UniqueConnection
将防止这个问题。
答案 1 :(得分:6)
请注意,拥有多个连接并不一定是错误的。它(可能)是完全有效的用途。它们非常罕见,我当然无法想到我曾经将它作为一种功能使用过。我记得有多个连接的所有情况都证明是一个错误而非预期。
答案 2 :(得分:5)
插槽被执行多次(正如其他人已经说过的那样)。
更多说明: