Qt网络之HTTP编程(3)

栏目: 编程工具 · 发布时间: 6年前

内容简介: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)));  
    //更新进度条  
} 

Qt网络之HTTP编程(3)

在上一个例子中我们就提到了manager->get(QNetworkRequest(url)),返回的是一个QNetworkReply对象,这里我们获得这个对象,使用它完成显示数据下载进度的功能。这里主要是关联了几个信号和槽。当有可用数据时,reply就会发出readyRead()信号,我们这时就可以将可用的数据保存下来。就是在这里,实现了数据分段下载保存,这样比下载完所有数据再保存,要节省很多内存。而利用reply的downloadProgress()信号,很容易就实现了进度条的显示 。

(4)保存数据函数。

void Widget::httpReadyRead()   //有可用数据  
{  
    if (file) file->write(reply->readAll());  //如果文件存在,则写入文件  
} 

Qt网络之HTTP编程(3)

这里当file可用时,将下载的数据写入文件。

(5)更新进度条函数。

void Widget::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes)  
 {  
    ui->progressBar->setMaximum(totalBytes); //最大值  
    ui->progressBar->setValue(bytesRead);  //当前值  
} 

Qt网络之HTTP编程(3)

每当有数据到来时,都更新进度条。

(6)完成下载。

void Widget::httpFinished()  //完成下载  
{  
    ui->progressBar->hide();  
    file->flush();  
    file->close();  
    reply->deleteLater();  
    reply = 0;  
    delete file;  
    file = 0;  
} 

Qt网络之HTTP编程(3)

这里只是当下载完成后,进行一些处理。

4.我们运行程序,效果如下。

下载网页文件:

Qt网络之HTTP编程(3)

下载华军软件园上的劳拉方块游戏:

Qt网络之HTTP编程(3)

下载完成后可以看到工程文件夹中debug文件夹中的下载的文件。

Qt网络之HTTP编程(3)

我们HTTP应用的内容就讲到这里,可以看到它是很容易的,也不需要你了解太多的HTTP的原理知识。关于相关的类的其他使用,你可以查看其帮助。


以上所述就是小编给大家介绍的《Qt网络之HTTP编程(3)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

函数响应式领域建模

函数响应式领域建模

【美】Debasish Ghosh / 李源 / 电子工业出版社 / 2018-1 / 79

传统的分布式应用不会切入微服务、快速数据及传感器网络的响应式世界。为了捕获这些应用的动态联系及依赖,我们需要使用另外一种方式来进行领域建模。由纯函数构成的领域模型是以一种更加自然的方式来反映一个响应式系统内的处理流程,同时它也直接映射到了相应的技术和模式,比如Akka、CQRS 以及事件溯源。《函数响应式领域建模》讲述了响应式系统中建立领域模型所需要的通用且可重用的技巧——首先介绍了函数式编程和响......一起来看看 《函数响应式领域建模》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具