1

我有一个计时器,当时间等于某个时间时,即。5秒、10秒、12秒。我想让它做点什么。

不断检查计时器值以查看它是否与我的值匹配的最佳方法是什么?

4

1 回答 1

1

轮询 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]);
}
于 2012-12-01T15:19:56.353 回答