1、QTime
直接上代码:
QTime t;
t.start();
while(t.elapsed()<1000)
QCoreApplication::processEvents();
最后一句话的含义:
不停地处理事件,以使得程序保持响应
原因:
主函数中:return a.exec();
这个exec启动了一个事件循环,如果在main函数里加了个类似while(1)的死循环,那么event loop就无法启动了
导致的问题就是程序正常的事件无法响应,比如label无法刷新、paintevent无响应之类
2、 QEventLoop
开启一个局部的事件循环,让其执行100ms后自己退出
QEventLoop eventloop;
QTimer::singleShot(100, &eventloop, SLOT(quit()));
eventloop.exec();
- 创建事件循环
- 启动定时器,让其100ms后触发事件循环的quit()槽
- 启动事件循
此方法,不影响其他线程的响应,又可以达到等待的目的
3、QThread
不能用 QThread::sleep(1); 方法
因这种方法使得 CPU 没空去干其他的事情,在多进程的情况下会影响其他程序的启动、响应速度
且,其他组件的刷新也会停止