我在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,有人告诉我如何使用它吗?
答案 0 :(得分:1)
您已将sleep
函数声明为QTest
类的成员,因此您不能将其称为免费函数。使其成为QTest
的静态成员,然后您可以:
QTest::sleep(time);
但是在GUI代码中睡觉是一个坏主意:它会冻结你的应用程序。这不是用户友好的。
您应该尝试使用QTimer
执行您想要达到的目标,以延迟通话或类似策略。