关于qt的http上传和下载资源的进度条显示

原创 2015年07月08日 15:39:02

qt提供的一系列接口是的qt程序在网络通信方面非常便捷,在项目开发中很多朋友会用到http协议来上传文件到服务器或者从服务器下载文件下来,这里面上传和下载的进度显示是一个提高用户体验很重要的实现,在这里简要讲一下这两个实现:

其实实现很简单,只要连接QNetworkReply类的两个信号便可以,先看文档:

上传:

void QNetworkReply::uploadProgress(qint64 bytesSent, qint64 bytesTotal)
This signal is emitted to indicate the progress of the upload part of this network request, if there's any. If there's no upload associated with this request, this signal will not be emitted.
The bytesSent parameter indicates the number of bytes uploaded, while bytesTotal indicates the total number of bytes to be uploaded. If the number of bytes to be uploaded could not be determined, bytesTotal will be -1.
The upload is finished when bytesSent is equal to bytesTotal. At that time, bytesTotal will not be -1.

下载:

void QNetworkReply::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
This signal is emitted to indicate the progress of the download part of this network request, if there's any. If there's no download associated with this request, this signal will be emitted once with 0 as the value of both bytesReceived and bytesTotal.
The bytesReceived parameter indicates the number of bytes received, while bytesTotal indicates the total number of bytes expected to be downloaded. If the number of bytes to be downloaded is not known, bytesTotal will be -1.
The download is finished when bytesReceived is equal to bytesTotal. At that time, bytesTotal will not be -1.
Note that the values of both bytesReceived and bytesTotal may be different from size(), the total number of bytes obtained through read() or readAll(), or the value of the header(ContentLengthHeader). The reason for that is that there may be protocol overhead or the data may be compressed during the download.

只要connect这两个信号到相应的槽,获得两个参数,便可以知道当前进度。其中第二个参数是当前操作文件的大小,第一个便是已上传或下载的大小

如何使用这两个信号?

大家都知道用qt的QNetworkAccessManager可以上传和下载,在调用get()和post()的时候放回一个QNetworkReply指针,我要做的就是connect这个指针的这两个信号就可以获得状态了:

QNetworkReply *reply;
QNetworkAccessManager *manager = new QNetworkAccessManager;
......

reply = manager->get(QNetworkRequest(url));
//更新进度条
connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(updateDataReadProgress(qint64,qint64)));

有必要可以联系我要例子~

Qt 之 HTTP 请求下载(支持断点续传)

简述最近在研究了一下用Qt 的方法来实现http下载,Qt 中的Http请求主要用到了QNetworkAccessManager、QNetworkReply、QNetworkRequest 这三块。本...

【Qt5开发及实例】10、关于进度条的显示

平常我们下载东西总会有一个显示下载了多少的进度条,我们今天来实现一下。 这里有两种显示方式 可以选择,第一个是用了 QProgressBar控件,第二个是用了QProgres...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt带进度条的启动界面

通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就...

Qt之HTTP上传/下载

简述在前面章节中我们讲述了关于Qt显示网络图片的内容,比较简单,因为图片一般都比较小,下载到本地速度比较快,所以基本不需要什么特殊处理,本节我们主要针对HTTP实现上传/下载进行详细的讲解与分享,包括...

qt http 下载文件

本文章介绍如何利用HTTP从网站上下载文件。在Qt网络编程中,需要用到协议,即HTTP。它是超文本传输协议,它是一种文件传输协议。对于HTTP就不多解释了。 在Qt网络编程中,需...

QT之HTTP下载获取文件大小信息

记录点滴,只为分享!希望对你有帮助,因为我也是在别人的帮助中慢慢成长!...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt通过Http上传文件(路过)

Qt通过Http上传文件(路过)

Qt 文件拷贝带进度条显示

拷贝线程源码,拷贝做了过滤,只复制源文件夹下的 .jpg、.avi文件
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于qt的http上传和下载资源的进度条显示
举报原因:
原因补充:

(最多只允许输入30个字)