我有一个梦想,我写的代码,可以像诗一样优美。我有一个梦想,我做的设计,能恰到好处,既不过度,也无不足。
如题,Qt发射了一次信号,关联的槽函数执行了多次。
Qt 的精髓所在就是信号槽,刚接触qt的时候遇到过一次这个问题,就是明明只发射了一次信号,但是关联的槽函数却执行了多次,当时年少,只是想了个办法解决这个问题,没有真正去了解这个问题,知道今天又出现了这个问题,记录一下前因后果,为后来人填坑。
描述下产生问题的环境:
发射信号的源是一个单例(也叫唯一实例),对应的槽函数在程序的MianWindow中,信号槽的绑定时刻在一个action产生的页面中,导致的情况如下:
打开程序时,第一次点击action打开页面执行的情况正常,在没有关闭程序的时候,再次打开该页面并执行对应的动作时,会执行两次该槽函数,第三次,会执行三次该槽函数…
情况是这么个情况,按照以前第一次遇到这种情况的思维,我的处理方式如下:
设置一个bool变量,使之只有在第一次执行有效,屏蔽掉后面的执行,注意,刚开始工作的时候做这种事情,情有可原,都工作了那么久再出现这种操作,不可原谅!
于是乎本着求真的态度(啊呸!),寻求生命的真谛(啊,再呸!),在一番折腾之后,发现了问题的所在。
信