qt delay函数
时间: 2024-04-09 10:22:54 浏览: 268
在Qt中,有多种延时函数可供使用。以下是其中三种常用的方法:
方法一:使用QTimer和QEventLoop
```cpp
void MainWindow::Delay(int msec) {
QEventLoop loop;
QTimer::singleShot(msec, &loop, SLOT(quit()));
loop.exec();
}
```
方法二:使用QTime和QCoreApplication::processEvents
```cpp
void MainWindow::sleep(unsigned int msec) {
QTime endTime = QTime::currentTime().addMSecs(msec);
while (QTime::currentTime() < endTime) {
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
}
```
方法三:使用QTimer和QCoreApplication::processEvents
```cpp
void MainWindow::Deferred(int msec) {
QTimer timer;
timer.setTimerType(Qt::PreciseTimer);
timer.start(msec);
while(timer.remainingTime() > 0)
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
}
```
另外还有两种方法:
方法四:使用QElapsedTimer
```cpp
void Widget::delay_3(int msec) {
QElapsedTimer t;
t.start();
while(t.elapsed() < msec);
}
```
方法五:使用自定义延时函数和QEventLoop
```cpp
void Widget::delay_2(int msec) {
QTime dieTime = QTime::currentTime().addMSecs(msec);
while( QTime::currentTime() < dieTime )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
```
阅读全文