9 个解决方案
#1
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
#2
最简单的办法是级联,比如一个月,一个月级联么。
#3
这个方法我考虑过,但是每毫秒或者每秒执行一次槽函数,在执行一年后,很可能会有偏差。
案例(只是随便想了个例子):设定某个事件,在每年的特定日期(比如十月一号早上八点),准时自动播放国歌,这个系统一直在运行着,只需安装设定一次就不需要在维护了。
#4
目前想到一个类似的方法,自己封装定时器,在内部将长时间的定时器分离成N个小计时器,和你说的级联一样。
#5
QTimer本来就没有(精度)这方面的保证,哪怕是1s的Internal,QTimer也不会保证间隔是1s。至于1ms,你太高看QTimer了,它没有这么高的精度。
#6
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
这个方法我考虑过,但是每毫秒或者每秒执行一次槽函数,在执行一年后,很可能会有偏差。
案例(只是随便想了个例子):设定某个事件,在每年的特定日期(比如十月一号早上八点),准时自动播放国歌,这个系统一直在运行着,只需安装设定一次就不需要在维护了。
QTimer本来就没有(精度)这方面的保证,哪怕是1s的Internal,QTimer也不会保证间隔是1s。至于1ms,你太高看QTimer了,它没有这么高的精度。
在我印象中,如果将internal设置非常大,系统会不会自动计算触发时间,然后在到达这个时间点的时候触发这个事件? 而每秒或者毫秒去触发一次,在多次延时之后,经历过一年 的时间,会不会误差会明显变大?具体没有看QTimer的实现细节,个人观点,如果有理解错误的地方,还望大神指正。(PS:我的好多qt技术,都是看您的博客1+1 =2学到的,在此多谢!)
#7
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
#8
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
谢谢,用QElapsedTimer 解决了
#9
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
#1
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
#2
最简单的办法是级联,比如一个月,一个月级联么。
#3
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
这个方法我考虑过,但是每毫秒或者每秒执行一次槽函数,在执行一年后,很可能会有偏差。
案例(只是随便想了个例子):设定某个事件,在每年的特定日期(比如十月一号早上八点),准时自动播放国歌,这个系统一直在运行着,只需安装设定一次就不需要在维护了。
#4
最简单的办法是级联,比如一个月,一个月级联么。
目前想到一个类似的方法,自己封装定时器,在内部将长时间的定时器分离成N个小计时器,和你说的级联一样。
#5
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
这个方法我考虑过,但是每毫秒或者每秒执行一次槽函数,在执行一年后,很可能会有偏差。
案例(只是随便想了个例子):设定某个事件,在每年的特定日期(比如十月一号早上八点),准时自动播放国歌,这个系统一直在运行着,只需安装设定一次就不需要在维护了。
QTimer本来就没有(精度)这方面的保证,哪怕是1s的Internal,QTimer也不会保证间隔是1s。至于1ms,你太高看QTimer了,它没有这么高的精度。
#6
比较好奇,哪一类的需要 大于1年的定时器啊?
不过实现起来倒是没什么难度,普通的 QTimer就行了,无非槽函数内加个计数器或者槽函数内根据QDateTime直接判断。
这个方法我考虑过,但是每毫秒或者每秒执行一次槽函数,在执行一年后,很可能会有偏差。
案例(只是随便想了个例子):设定某个事件,在每年的特定日期(比如十月一号早上八点),准时自动播放国歌,这个系统一直在运行着,只需安装设定一次就不需要在维护了。
QTimer本来就没有(精度)这方面的保证,哪怕是1s的Internal,QTimer也不会保证间隔是1s。至于1ms,你太高看QTimer了,它没有这么高的精度。
在我印象中,如果将internal设置非常大,系统会不会自动计算触发时间,然后在到达这个时间点的时候触发这个事件? 而每秒或者毫秒去触发一次,在多次延时之后,经历过一年 的时间,会不会误差会明显变大?具体没有看QTimer的实现细节,个人观点,如果有理解错误的地方,还望大神指正。(PS:我的好多qt技术,都是看您的博客1+1 =2学到的,在此多谢!)
#7
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
#8
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。
谢谢,用QElapsedTimer 解决了
#9
当然,单纯如此累积,误差会非常大。
但是我们肯定不会单纯去累积的,你完全可以在槽函数内,直接判断已经流逝了多少时间(QElapsedTimer ),或者判断距离目标还有多长时间(QDateTime)。