如何在Qt的Mainwindow.cpp中使用qSleep?

时间:2012-12-21 06:53:27

标签: qt4

我在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.can中包含了delay.h,有人告诉我如何使用它吗?

1 个答案:

答案 0 :(得分:1)

您已将sleep函数声明为QTest类的成员,因此您不能将其称为免费函数。使其成为QTest的静态成员,然后您可以:

QTest::sleep(time);

但是在GUI代码中睡觉是一个坏主意:它会冻结你的应用程序。这不是用户友好的。

您应该尝试使用QTimer执行您想要达到的目标,以延迟通话或类似策略。