如何使用 Qt 创建暂停/等待功能?

新手上路,请多包涵

我正在玩 Qt ,我想在两个命令之间创建一个简单的暂停。但是它似乎不允许我使用 Sleep(int mili); ,而且我找不到任何明显的等待功能。

我基本上只是在制作一个控制台应用程序来测试一些稍后将包含在适当的 Qt GUI 中的类代码,所以现在我不担心破坏整个事件驱动模型。

原文由 Zac 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

上一个问题 提到使用 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
}

原文由 Arnold Spence 发布,翻译遵循 CC BY-SA 3.0 许可协议

这适用于 Qt5:

 void wait( int ms ) {
   QElapsedTimer timer;
   timer.start();

   while ( timer.elapsed() < ms )
       QCoreApplication::processEvents();
}

原文由 Calanor 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题