HTTP即超文本传输协议,它是一种文件传输协议。这一节中我们将讲解如何利用HTTP从网站上下载文件。
上一节中我们已经提到过了,现在Qt中使用QNetworkAccessManager类和QNetworkReply类来进行HTTP的编程。下面我们先看一个简单的例子,然后再进行扩展。
(一)最简单的实现。
1.我们新建Qt4 Gui QApplication 。
工程名为“http”,然后选中QtNetwork模块,最后Base class选择QWidget 。注意:如果新建工程时没有添加QtNetwork模块,那么就要手动在工程文件.pro中添加代码 QT += network ,表明我们使用了网络模块。
2.我们在widget.ui文件中添加一个 Text Browser ,如下图。
3..在widget.h中我们添加代码。
添加头文件:#include <QtNetwork>
私有变量private中:QNetworkAccessManager *manager;
私有槽函数private slots 中:void replyFinished(QNetworkReply *);
4.在widget.cpp文件中添加代码。
在构造函数中添加如下代码:
manager = new QNetworkAccessManager(this); //新建QNetworkAccessManager对象
connect(manager,SIGNAL(finished(QNetworkReply*)), //关联信号和槽
this,SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl(“http://www.yafeilinux.com”))); //发送请求
然后定义函数:
void Widget::replyFinished(QNetworkReply *reply) //当回复结束后
{
QTextCodec *codec = QTextCodec::codecForName(“utf8″);
//使用utf8编码,这样才可以显示中文
QString all = codec->toUnicode(reply->readAll());
ui->textBrowser->setText(all);
reply->deleteLater(); //最后要释放reply对象
}
5.运行效果如下。
Qt网络之HTTP编程及功能扩展

这篇博客介绍了如何在Qt环境中使用QNetworkAccessManager和QNetworkReply进行HTTP编程,以实现从网站下载文件并显示下载进度。通过创建GUI应用程序,设置信号与槽关联,实现数据接收和进度条更新,展示了简单和带进度条的HTTP文件下载功能。


最低0.47元/天 解锁文章
400

被折叠的 条评论
为什么被折叠?



