Qt线程外使用Sleep

一:方法1

QTime t;
t.start();
while(t.elapsed()<1000)
{     QCoreApplication::processEvents();


二:方法2
QElapsedTimer t;
t.start();
while(t.elapsed()<1000)
{     QCoreApplication::processEvents();


三:方法3

QTest::qWait

源代码:

namespace QTest
{
    inline static void qWait(int ms)
    {
        Q_ASSERT(QCoreApplication::instance());

        QElapsedTimer timer;
        timer.start();
        do {
            QCoreApplication::processEvents(QEventLoop::AllEvents, ms);
            QTest::qSleep(10);
        } while (timer.elapsed() < ms);
    }
voidQTest::qSleep(int ms)
{
if(ms < 0) return;
  
#ifdef Q_OS_WIN32
  Sleep(ms);
#elif defined Q_OS_LINUX
  struct timespec ts = {ms/1000,(ms%1000)*1000*1000};//秒和纳秒
  nanosleep(&ts,NULL);
}

四:方法4
QEventLoop eventloop;
QTimer::singleShot(100, &eventloop, SLOT(quit()));
eventloop.exec();
原文地址:https://www.cnblogs.com/zhangnianyong/p/7110541.html