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 回答