【发布时间】:2012-11-19 13:54:03
【问题描述】:
我有一个计时器,当时间等于某个时间时,即。 5秒、10秒、12秒。我想让它做点什么。
不断检查计时器值以查看它是否与我的值匹配的最佳方法是什么?
【问题讨论】:
-
我认为你需要 1 个 5 秒的计时器,1 个 10 秒的计时器,1 个 12 秒间隔的计时器。
标签: qt
我有一个计时器,当时间等于某个时间时,即。 5秒、10秒、12秒。我想让它做点什么。
不断检查计时器值以查看它是否与我的值匹配的最佳方法是什么?
【问题讨论】:
标签: qt
轮询 QTime 的时间是个坏主意。你有 QTimer ,它使用你平台的硬件定时器设施。将单次 QTimer 设置为 5 秒。将其 timeout() 信号连接到一个插槽,并在该插槽中为您的下一个间隔重新编程 QTimer。其一般概念是:
int intervals[] = {5000, 10000, 12000};
// Alternative:
// int intervals[] = {5000, 5000, 2000};
int currentInterval = 0;
QTimer timer; // Make sure you set this up a single-shot timer.
// ...
// slot
void handleTimeout()
{
++currentInterval;
// You should probably use a QList<int> instead in your real code and query size().
if (currentInterval >= sizeof(intervals) / sizeof(intervals[0])) {
// We're done.
return;
}
timer.start(intervals[currentInterval] - intervals[currentInterval - 1]);
// Alternative:
// timer.start(intervals[currentInterval]);
}
【讨论】:
timer.start() 的调用。