Qt截屏及扩展

本文介绍了使用Qt进行屏幕截取的基本操作,并探讨了在图片保存过程中如何利用事件循环(eventLoop)处理异步提示,确保'正在保存'和保存结果提示能够正确显示。通过QTimer::singleShot()方法,在不阻塞UI线程的情况下实现优雅的进度反馈。
摘要由CSDN通过智能技术生成

QScreen *p_screen = QGuiApplication::primaryScreen();
pix = p_screen->grabWindow(this->winId(), 0, 0, 1024, 768);
imagename = QDateTime::currentDateTime().toString("MM_dd_hh_mm_ss")+ ".jpg";
if(pix.save(imagename,"jpg", -1)) {
    qDebug() << "PrintScreenSuccessfully!";
}else {
    qDebug() << "PrintScreenFailed!";
}

    这样其实简单截屏就已经有了,但是当我们需要在图片保存的时候,往往需要一个更人性化的提示,即显示一个“正在保存”,保存完图片之后,如果保存完成,则需要显示"图片保存完成",如若保存失败,那么需要显示“图片保存失败”这种需求的时候,我们是不是直接写两个Label在save一前一后的show出来呢。

    答案是否定的,因为了解ui底层实现方式的人都知道,ui底层实现是单线程的,那么在这种有save来堵塞的情况下,我们看到的现象只会是“正在保存”没有出现或者一闪而逝,最终只会看见保存完成或者保存失败,那么怎么解决呢。

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值