我尝试在02:30等特定时间启动计时器。每天从02.30开始。
有可能吗?你有什么主意吗?
非常感谢。
答案 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