Qt遅延関数
1287 ワード
Qt遅延関数は,現在のスレッドをブロックするクラスと,現在のスレッドをブロックしないクラスの2つに分類される.
一、現在のスレッドをブロックする
1,QElapsedTimerヘッダファイルを使用:
2,
二、現在のスレッドをブロックしない
1、カスタム遅延関数:
2、サブイベントループを作成します.サブイベントループでは、親イベントループは実行できます.
参照先:https://blog.csdn.net/qq_40194498/article/details/80063960
一、現在のスレッドをブロックする
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