QTimer启动特定时间

时间:2011-03-01 07:48:03

标签: c++ qt

我尝试在02:30等特定时间启动计时器。每天从02.30开始。

有可能吗?你有什么主意吗?

非常感谢。

3 个答案:

答案 0 :(得分:9)

QTimer本身不处理特定时间,但您可以将其与QDateTime结合使用以获得您想要的效果。也就是说,使用QDateTime对象来计算(现在)和2:30之间的秒数(QDateTime :: msecsTo()在这里看起来特别合适),然后将QTimer设置为在那么多秒之后关闭。根据需要重复。

答案 1 :(得分:6)

根据所需的分辨率,您可以使用普通的QTimer,每分钟发出一次 在timerEvent中,您可以检查您是否在正确的时间(使用QDateTime),并触发必要的事件。

答案 2 :(得分:1)

Jeremy的解决方案确实很优雅,但它没有考虑到夏令时。 为了防范这种情况,你应该每小时开一次计时器事件并检查挂钟。 计算目标的增量,就像Jeremy建议的那样,如果它落在接下来的一小时内,设置一个计时器来启动,并禁用每小时计时器。
如果没有,只需等待每小时计时器重新开火。

Pseudo code:

Get wall clock time
Calculate difference between target time and wall clock
If difference < 1 hour:
    Set timer to fire after difference secs
    If this is a repeating event, restart the hourly timer
Else:
    Start watch timer to do this calculation again after one hour