QTimer
似乎实际上创建了一个消耗CPU滴答和发布事件等的“计时器”。QElapsedTimer
也是如此吗?
或者这就像win32的GetTickCount
那样当你在QElapsedTimer
上调用一个方法时,它会抓取当前的滴答计数并从计数开始时减去它?
我想知道让这些东西闲逛是不是一个好主意,或者他们会吃QTimer
这样的电池吗?
答案 0 :(得分:2)
QTimer
只会在某些情况下“吃掉”电池。具体来说,如果它是Windows 7及更早版本的Qt::PreciseTimer
- 在这些系统上,它会将滴答频率提高到1000Hz。非常短的计时器将强制执行相同的行为。由于这些系统不无空闲,因此有效粗略定时器的存在对功耗没有任何影响,因为无论是否需要,系统都以固定速率进行滴答。
在无人操作的操作系统上,QTimer
没有这种不良影响。这包括OS X / xnu,Windows 8或无滴答Linux。
QElapsedTimer
不是QObject
,也不提供任何异步事件。它只是提供了平台时间API的接口(不是计时器API)。