QT 程序休眠一段时间

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 没空去干其他的事情,在多进程的情况下会影响其他程序的启动、响应速度

且,其他组件的刷新也会停止

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值