QNetworkAccessManager 类用于协调网络操作,一旦创建一个 request,该类用来发出请求并发射信号来报告它的进度。
QNetworkRequest 类用于表示网络请求,它也充当一个与请求信息相关的通用容器,例如:任何头信息和使用的加密相关的信息。当一个 request 对象被构造时,指定的 URL 决定所用的协议。目前 HTTP、FTP 和本地文件 URLs 支持上传和下载。
QNetworkReply 类用于网络请求的响应,当一个 request 被发出后,QNetworkAccessManager 就会创建相应的响应,通过 QNetworkReply 提供的信号可以单独监听每个响应,或者使用 manager 的信号。由于 QNetworkReply 是 QIODevice 的一个子类,可以同步或异步处理响应;也就是说,阻塞或非阻塞操作。

使用举例

//qt_chrome_url.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtNetWork>
#include "ui_qt_chrome_url.h"
class qt_chrome_url : public QMainWindow
{
Q_OBJECT
public:
qt_chrome_url(QWidget *parent = Q_NULLPTR);
~qt_chrome_url();
private:
void startWebset();
private slots:
void slotReplyFinished(QNetworkReply* reply);
private:
Ui::qt_chrome_urlClass ui;
QNetworkAccessManager* _pNetworkManager;
};
//qt_chrome_url.cpp
#include <QDomDocument>
#include "qt_chrome_url.h"
qt_chrome_url::qt_chrome_url(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
_pNetworkManager = new QNetworkAccessManager(this);
connect(_pNetworkManager, &QNetworkAccessManager::finished, this, &qt_chrome_url::slotReplyFinished);
startWebset();
}
qt_chrome_url::~qt_chrome_url()
{
if (_pNetworkManager)
{
delete _pNetworkManager;
_pNetworkManager = NULL;
}
}
void qt_chrome_url::startWebset()
{
QNetworkRequest request;
QString url = "http://coucc.com.cn/download/test.xml";//所下载文件的地址
request.setUrl(QUrl(url));
QNetworkReply* reply = _pNetworkManager->get(request);
}
void qt_chrome_url::slotReplyFinished(QNetworkReply* reply)
{
qDebug() << "openFinished";
QDomDocument doc;
QByteArray data;
data = reply->readAll();
doc.setContent(data);
//接下来是对获取得到的文件内容的读取……
}
其中,需添加Qt的模块Network。VS2019 添加Qt模块:右键解决方案->属性



2626

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



