Qt HTTP下载数据

添加头文件:

cpp 复制代码
#include    <QNetworkAccessManager>
#include    <QNetworkReply>
#include    <QUrl>
#include    <QDesktopServices>

创建对象:

cpp 复制代码
QNetworkAccessManager networkManager;//网络管理
    QNetworkReply *reply;   //网络响应
    QFile *downloadedFile;//下载保存的临时文件

输入url地址:

cpp 复制代码
QUrl newUrl = QUrl::fromUserInput(urlSpec);//URL地址
复制代码
创建临时文件:
cpp 复制代码
downloadedFile =new QFile(fullFileName);
if (!downloadedFile->open(QIODevice::WriteOnly))
    {
        QMessageBox::information(this, tr("错误"),"临时文件打开错误");
复制代码
发送请求,创建网络响应:
cpp 复制代码
reply = networkManager.get(QNetworkRequest(newUrl));

连接信号与槽:

cpp 复制代码
connect(reply, SIGNAL(finished()), this, SLOT(on_finished()));
    connect(reply, SIGNAL(readyRead()), this, SLOT(on_readyRead()));
    connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
            this, SLOT(on_downloadProgress(qint64,qint64)));


void MainWindow::on_finished()
{//网络响应结束
    QFileInfo fileInfo;
    fileInfo.setFile(downloadedFile->fileName());

    downloadedFile->close();
    delete downloadedFile;
    downloadedFile = Q_NULLPTR;

    reply->deleteLater(); //
    reply = Q_NULLPTR;

    if (ui->checkOpen->isChecked())//打开下载的文件
        QDesktopServices::openUrl(QUrl::fromLocalFile(fileInfo.absoluteFilePath()));

    ui->btnDownload->setEnabled(true);
}

void MainWindow::on_readyRead()
{//读取下载的数据
    downloadedFile->write(reply->readAll());
}

void MainWindow::on_downloadProgress(qint64 bytesRead, qint64 totalBytes)
{//下载进程
    ui->progressBar->setMaximum(totalBytes);
    ui->progressBar->setValue(bytesRead);
}
相关推荐
F***E2393 分钟前
SQL 注入详解:原理、危害与防范措施
数据库·sql·oracle
温轻舟5 分钟前
禁毒路上,任重道远 | HTML页面
开发语言·前端·javascript·css·html·温轻舟
A***F1576 分钟前
【mysql】WITH AS 语法详解
数据库·mysql
s***117010 分钟前
一、安装Redis(win11环境下)
数据库·redis·缓存
likuolei24 分钟前
XSL-FO 列表
前端·数据库
树叶@24 分钟前
KaiwuDB 时序数据库深度解析:在智慧能源领域实战指南
数据库·能源·时序数据库
学历真的很重要25 分钟前
Hello-Agents —— 03大语言模型基础 通俗总结
开发语言·人工智能·后端·语言模型·自然语言处理·面试·langchain
wefg11 小时前
【C++】IO流
开发语言·c++
"菠萝"1 小时前
C#知识学习-020(访问关键字)
开发语言·学习·c#
箫笙默2 小时前
JS基础 - 正则笔记
开发语言·javascript·笔记