Qt遅延関数

1287 ワード

Qt遅延関数は,現在のスレッドをブロックするクラスと,現在のスレッドをブロックしないクラスの2つに分類される.
一、現在のスレッドをブロックする
1,QElapsedTimerヘッダファイルを使用:#include
void Widget::delay_3(int msec)
{
    QElapsedTimer t;
    t.start();
    while(t.elapsed()

2,
void Widget::delay_4(int mesc)
{
    QThread::msleep(mesc);
    //QThread::usleep()
    //QThread::sleep()
}

二、現在のスレッドをブロックしない
1、カスタム遅延関数:QEventLoop。 QCoreApplication::processEvents(QEventLoop::AllEvents, 100); ,
QCoreApplication::processEvents(QEventLoop::AllEvents, 100); while , , 100ms , , 。
を使用
void Widget::delay_2(int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

2、サブイベントループを作成します.サブイベントループでは、親イベントループは実行できます.
void Widget::delay_1(int msec)
{
    QEventLoop loop;//          
    QTimer::singleShot(msec, &loop, SLOT(quit()));//       ,             
    loop.exec();//        ,       ,       ,      
}

 
参照先:https://blog.csdn.net/qq_40194498/article/details/80063960