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