1. ホーム
  2. c++

[解決済み] Qtで一時停止/待ちの機能を作るには?

2023-05-17 22:54:32

質問

私は Qt で遊んでいて、2つのコマンドの間に簡単なポーズを作りたいと思っています。しかし、それは私が使用することはできません。 Sleep(int mili); を使わせてくれないようで、明らかな待機関数も見当たりません。

私は基本的に、後に適切なQt GUIに含まれることになるいくつかのクラスコードをテストするためのコンソールアプリケーションを作成しているだけなので、今のところ、イベント駆動モデル全体を壊すことについては気にしていません。

どのように解決するのですか?

これは 前の質問 を使用することに言及しています。 qSleep() の中にある QtTest モジュールになります。でのリンクのオーバーヘッドを避けるために QtTest モジュールのリンクのオーバーヘッドを避けるために、 その関数のソースを見ると、単にあなた自身のコピーを作ってそれを呼び出すことができます。これは、Windows の Sleep() または Linux nanosleep() .

#ifdef Q_OS_WIN
#include <windows.h> // for Sleep
#endif
void QTest::qSleep(int ms)
{
    QTEST_ASSERT(ms > 0);

#ifdef Q_OS_WIN
    Sleep(uint(ms));
#else
    struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
    nanosleep(&ts, NULL);
#endif
}