当前位置: 代码迷 >> QT开发 >> connect放在单次定时器启动前和启动后的区别,求解答解决思路
  详细解决方案

connect放在单次定时器启动前和启动后的区别,求解答解决思路

热度:261   发布时间:2016-04-25 05:12:09.0
connect放在单次定时器启动前和启动后的区别,求解答
定义了一个定时器,设置为单次定时器,将定时器与一个槽函数connect,固定时常后触发。

现在发现一个现象:
1、将connect放在start函数之前,槽函数只执行一次,正常;
2、但是将connect放在start函数之后,槽函数执行了多次,(多次试验测试,发现次数不定)。

求解,为什么啊?

------解决方案--------------------
应用程序的定时器都是由一个衍生多个,定时器的oneshot属性应该不能被实时响应很正常,定时器开启时就会按照默认的循环,具体什么时候能响应oneshot的设置就不一定了
------解决方案--------------------
探讨

在项目中开发遇到的,虽然解决了问题,但是不明白怎么回事。

这也不用贴代码吧,已经说的很清楚了,如你所说,相关代码也只有五六行而已。

------解决方案--------------------
QTimer
一般情况下 start() 后就开始计时,定时时间到时会发出信号,发信号前后该定时器项在定时器队列中会调整下但不移除,直到 stop() 才会将该定时器项从定时器队列中摘除
可用 qt creator 跟踪看下

onshot 标志设置后,之后的定时到时后,会自动调用 stop() 类似动作
  相关解决方案