QEventLoop进行函数运行进度控制

【问题场景】

从大华人脸相机发送截图请求后,会接收到一系列返回值,将这些返回值组合成一个文件,就可以还原成一张jpg格式的图片。

我要将这个接口封装成一个函数,即输入为http请求,返回结果是一张图片。使用QNetworkAccessManager来进行http请求的时候通常需要signal-slot机制来保数据完成传输后再对reply进行操作。以前的方法槽函数对象为另一个函数,而那个函数处理很难对这个函数的运行进行控制。经过查询之后发现了QEventLoop,使信号发送和数据接收在一个函数进程内实现,简直是函数过程控制的利器。

解决:使用QEventLoop进行函数的运行进度控制。

实例:持续读取http发送的reply,直到accessManager完成所有数据的传输,结束这个函数。

这个过程的优点就是保证传输的数据的完整性。

QNetworkAccessManager* accessManager=new QNetworkAccessManager();

QNetworkRequest request;

QUrl url(httpurl);

request.setUrl(url);

request.setHeader(QNetworkRequest::ContentTypeHeader

,QVariant("application/x-www-form-urlencoded"));

reply=accessManager->get(request);

file.setFileName(image_path);

file.open(QIODevice::ReadWrite);

file_stream.setDevice(&file);

connect(reply, SIGNAL(readyRead()), this,

SLOT(ReadyToReadReply()));

QEventLoop eventLoop;

connect(accessManager, SIGNAL(finished(QNetworkReply*))

, &eventLoop, SLOT(quit()));//信号槽

eventLoop.exec();

//exec()之前语句会一直处于运行中,直到QEventLoop退出

file.close();

delete reply;

return 0;

QEventLoop进行函数运行进度控制相关推荐

  1. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  2. 【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )

    文章目录 I . FFMPEG 播放进度控制 II . FFMPEG 播放视频 ( 效果展示 ) III . FFMPEG 获取视频时长 IV . FFMPEG 视频播放进度获取 V . FFMPEG ...

  3. opencv 实现进度控制

    进度控制: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\cxcore.h> ...

  4. 使用CreateProcess函数运行其他程序

    为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数创建一个运行相应程序的进程.其函数原型如下. CreateProcess(appName, c ...

  5. Opencv中视频播放与进度控制

    视频画面本质上是由一帧一帧的连续图像组成的,播放视频其实就是在播放窗口把一系列连续图像按一定的时间间隔一幅幅贴上去实现的. 人眼在连续图像的刷新最少达到每秒24帧的时候,就分辨不出来图像间的闪动了,使 ...

  6. FFmpeg音视频播放器系列(第三篇:seek实现播放进度控制)

    文章目录 如何实现播放进度控制 av_seek_frame seek操作要点 按视频流seek 按音频流seek 代码实现 上一篇基本实现了音视频的播放同步,简单的按键控制暂停.恢复.退出操作,这一篇 ...

  7. 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制

    基于QMediaPlayer的简易视频播放器 1.创建基本布局 2.QMediaPlayer的基本使用 3.结合QSlider实现播放进度控制和音量控制 4.重载QSlider鼠标响应事件,实现单击跳 ...

  8. python函数运行加速

    前言: 博主在处理一个任务的时候,需要需要遍历一个文件夹下面所有的文件,但是单个文件的处理特别耗时,发现cp几乎在单核工作,根本没有发挥计算机的性能,下面来看一下具体的操作,调用所有的核心一起工作. ...

  9. Vue3+TypeScript实现网易云音乐WebApp(播放界面:播放、暂停、音量控制、播放进度控制(点击/拖拽进度条)、上一首、下一首)

    1. 成果展示 真实接口地址 本项目使用的是真实线上的网易云API 线上演示地址 目前只做了每日推荐(需登录)以及排行榜功能,点个star吧大佬们! 项目GitHub地址 main分支是Vue3+Ty ...

最新文章

  1. 序列化和反序列化实现
  2. python代码找到链表的倒数第K个节点并打印
  3. Mila唐建专访:Bengio领路,缘起生物梦,AI如何变革生物制药?
  4. 样本量极少如何机器学习?最新Few-Shot Learning综述
  5. linux nvme分区,这些 loop 分区是什么鬼东西?
  6. Web前端小白入门指迷
  7. 完全二叉树最小深度_二叉树:我有多少个节点?
  8. 如何解决访问Windows Update网站时收到0X8024001D错误信息
  9. 原生JS实现点击导航栏鼠标左右滑动(适用于PC端和移动端)
  10. R-Tree空间索引算法的研究历程和最新进展分析
  11. vscode如何连接新设备_台州要用“超级平台”连接300万台工业设备,成为全省新示范...
  12. 用单片机测量流体流速的_金属管转子流量计基本测量原理
  13. android 键盘点击事件监听事件,Android 键盘事件触发以及监听
  14. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
  15. [洛谷P3550][POI2013]TAK-Taxis
  16. 从ip_queue到nfnetlink_queue(上)
  17. 网易云音乐基于用户的推荐系统
  18. 淘宝直通车ROI,投产比怎么算,ROI计算公式
  19. 关于项目管理的通俗讲解
  20. 中国图书分类号-自动化_计算机

热门文章

  1. C++的静态联编和动态联编
  2. jQuery 方法 十四. html()方法和text()方法
  3. Django【基础篇】
  4. linux 挂载windows共享目录 is not a valid block device
  5. 一个未知高度垂直居中的简单方法
  6. uva562Dividing Coins
  7. QTP模拟鼠标和键盘事件整理
  8. 在线OPML美化格式化工具
  9. Mina Basics 04- 会话
  10. 4Python全站之路系列之正则表达式re模块