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 に答える