0

私はdelay.cppで次の機能を持っています

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
    }

そして、delay.h で次のように定義されています。

 void qSleep(int);

Qt の mainwindow.cpp でこの関数を使用したいと考えています。Mainwindowのメンバー関数でこの関数を使用している場合、

void MainWindow::xyz()
{
    qsleep(1000);
}

mainwindow.cpp に delay.h を含めたにもかかわらず、コンパイラはこのスコープで宣言されていないと言っています。

4

1 に答える 1

1

sleep関数をクラスのメンバーとして宣言したQTestので、無料の関数のように呼び出すことはできません。の静的メンバーにするQTestと、次のことができます。

QTest::sleep(time);

ただし、GUIコードでスリープすることはお勧めできません。アプリケーションがフリーズします。それはユーザーフレンドリーではありません。

QTimer通話を遅らせるために、または同様の戦略を使用して、達成しようとしていることを実行する必要があります。

于 2012-12-21T07:03:19.393 に答える