内容简介:Qt网络之HTTP编程(3)
(3)链接请求函数。
void Widget::startRequest(QUrl url) //链接请求 { reply = manager->get(QNetworkRequest(url)); //下面关联信号和槽 connect(reply,SIGNAL(finished()),this,SLOT(httpFinished())); //下载完成后 connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead())); //有可用数据时 connect(reply,SIGNAL(downloadProgress(qint64,qint64)), this,SLOT(updateDataReadProgress(qint64,qint64))); //更新进度条 }
在上一个例子中我们就提到了manager->get(QNetworkRequest(url)),返回的是一个QNetworkReply对象,这里我们获得这个对象,使用它完成显示数据下载进度的功能。这里主要是关联了几个信号和槽。当有可用数据时,reply就会发出readyRead()信号,我们这时就可以将可用的数据保存下来。就是在这里,实现了数据分段下载保存,这样比下载完所有数据再保存,要节省很多内存。而利用reply的downloadProgress()信号,很容易就实现了进度条的显示 。
(4)保存数据函数。
void Widget::httpReadyRead() //有可用数据 { if (file) file->write(reply->readAll()); //如果文件存在,则写入文件 }
这里当file可用时,将下载的数据写入文件。
(5)更新进度条函数。
void Widget::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes) { ui->progressBar->setMaximum(totalBytes); //最大值 ui->progressBar->setValue(bytesRead); //当前值 }
每当有数据到来时,都更新进度条。
(6)完成下载。
void Widget::httpFinished() //完成下载 { ui->progressBar->hide(); file->flush(); file->close(); reply->deleteLater(); reply = 0; delete file; file = 0; }
这里只是当下载完成后,进行一些处理。
4.我们运行程序,效果如下。
下载网页文件:
下载华军软件园上的劳拉方块游戏:
下载完成后可以看到工程文件夹中debug文件夹中的下载的文件。
我们HTTP应用的内容就讲到这里,可以看到它是很容易的,也不需要你了解太多的HTTP的原理知识。关于相关的类的其他使用,你可以查看其帮助。
以上所述就是小编给大家介绍的《Qt网络之HTTP编程(3)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法分析导论
(美)Robert Sedgewick、(法)Philippe Flajolet / 冯舜玺、李学武、裴伟东、等其他 / 机械工业出版社 / 2006-4 / 38.00元
本书阐述了用于算法数学分析的主要方法,所涉及的材料来自经典数学课题,包括离散数学、初等实分析、组合数学,以及来自经典的计算机科学课题,包括算法和数据结构,本书内容集中覆盖基础、重要和有趣的算法,前面侧重数学,后面集中讨论算法分析的应用,重点的算法分的的数学方法。每章包含大量习题以及参考文献,使读者可以更深入地理解书中的内容。 本书适合作为高等院校数学、计算机科学以及相关专业的本科生和研究生的......一起来看看 《算法分析导论》 这本书的介绍吧!