12.4.3 实现网络文件下载
本小节通过QNetworkReply类实现浏览器的下载功能,可以下载互联网上的文件。因为QNetworkReply继承于QIODevice类,所以当网络上有数据可读时,会触发readyRead()信号,可以在readyRead()信号关联的槽函数里读取数据。要完成网络文件下载功能,还需要用到QNetworkReply类的downloadProgress()和finished()信号。
这两个信号的原型如下:
[signal] void QNetworkReply:: downloadProgress (qint64 bytesReceived, qint64 bytesTotal)
[signal] void QNetworkReply::finished()
其中downloadProgress信号是在下载进度更新时触发,可以用来更新下载的进度条,形参bytesTotal代表文件的总字节数,bytesReceived代表当前已经下载的字节数。finished()信号用于报告网络请求已经处理完毕,也就是说当文件下载成功时,就会触发finished()信号。
下载文件运行效果如下:(配套代码CH12-6)