当前位置: 首页 > news >正文

QT—基于http协议的网络文件下载

1.常用到的类

QNetworkAccessManager类用于协调网络操作,负责发送网络请求,创建网络响应

QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号:

finished():完成后发出信号

readyRead():有数据读的数据发出信号

downloadProgress():表示网络操作进度的信号,有bytesRead和totalBytes两个参数,表示已读取字节数和总字节数

QNetworkReply 是QIODevice的子类,所以QNetworkReply支持流读写功能,也支持异步或同步工作。

2.代码

.h

#ifndef HTTP_H
#define HTTP_H#include <QMainWindow>
#include <QUrl>
#include <QFile>
#include <QNetworkAccessManager>
#include <QNetworkReply>
QT_BEGIN_NAMESPACE
namespace Ui { class http; }
QT_END_NAMESPACEclass http : public QMainWindow
{Q_OBJECTpublic:http(QWidget *parent = nullptr);~http();private:Ui::http *ui;QNetworkAccessManager networkManager;QNetworkReply *reply;QFile *downFile;public slots:void on_finished();void on_readyRead();void  downLoadProgress(qint64 bytesRead,qint64 totalBytes);
private slots:void on_pushButton_2_clicked();void on_pushButton_clicked();
};
#endif // HTTP_H
#ifndef HTTP_H
#define HTTP_H#include <QMainWindow>
#include <QUrl>
#include <QFile>
#include <QNetworkAccessManager>
#include <QNetworkReply>
QT_BEGIN_NAMESPACE
namespace Ui { class http; }
QT_END_NAMESPACEclass http : public QMainWindow
{Q_OBJECTpublic:http(QWidget *parent = nullptr);~http();private:Ui::http *ui;QNetworkAccessManager networkManager;QNetworkReply *reply;QFile *downFile;public slots:void on_finished();void on_readyRead();void  downLoadProgress(qint64 bytesRead,qint64 totalBytes);
private slots:void on_pushButton_2_clicked();void on_pushButton_clicked();
};
#endif // HTTP_H

.cpp

#include "http.h"
#include "ui_http.h"
#include<QDir>
http::http(QWidget *parent): QMainWindow(parent), ui(new Ui::http)
{ui->setupUi(this);
}http::~http()
{delete ui;
}void http::on_finished()
{QFileInfo fileInfo;fileInfo.setFile(downFile->fileName());downFile->close();delete downFile;reply->deleteLater();reply = nullptr;ui->pushButton->setEnabled(true);}
void http::on_readyRead()
{downFile->write(reply->readAll());
}void http::downLoadProgress(qint64 bytesRead, qint64 totalBytes)
{ui->progressBar->setMaximum(totalBytes);ui->progressBar->setValue(bytesRead);
}void http::on_pushButton_2_clicked()
{//缺省路径QString curPath = QDir::currentPath();QDir dir(curPath);QString sub = "temp";dir.mkdir(sub);ui->lineEdit_2->setText(curPath + "/" + sub + "/");}void http::on_pushButton_clicked()
{//下载QString url = ui->lineEdit->text().trimmed();if(url.isEmpty())return;QUrl newUrl = QUrl::fromUserInput(url);if(!newUrl.isValid())return;QString tempDir = ui->lineEdit_2->text().trimmed();if(tempDir.isEmpty())return;QString fullFileName = tempDir+newUrl.fileName();if(QFile::exists(fullFileName))QFile::remove(fullFileName);downFile = new QFile(fullFileName);if(!downFile->open(QIODevice::WriteOnly))return;ui->pushButton->setEnabled(false);reply = networkManager.get(QNetworkRequest(newUrl));connect(reply,&QNetworkReply::finished,this,&http::on_finished);connect(reply,&QNetworkReply::readyRead,this,&http::on_readyRead);connect(reply,&QNetworkReply::downloadProgress,this,&http::downLoadProgress);}

结果:

点击缺省路径,保存文件

在地址栏输入下载的文件地址,例:下载网易云音乐logo图片,地址如下

http://p3.music.126.net/tBTNafgjNnTL1KlZMt7lVA==/18885211718935735.jpg

原文链接:https://blog.csdn.net/wzz953200463/article/details/123858775 

相关文章:

QT—基于http协议的网络文件下载

1.常用到的类 QNetworkAccessManager类用于协调网络操作&#xff0c;负责发送网络请求&#xff0c;创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号&#xff1a; finished()&#xff1a;完成…...

SpringBoot-配置优先级

配置 SpringBoot项目支持的三种格式的配置文件 application.properties&#xff1a;这是最常用的配置文件类型&#xff0c;使用键值对的形式来配置应用程序的属性。可以在该文件中配置应用程序的端口号、数据库连接信息、日志级别等。 application.yml&#xff1a;这是一种更…...

科普初步了解大模型

目录 一、大模型的简单认知 &#xff08;一&#xff09;官方定义 &#xff08;二&#xff09;聚焦到大语言模型 &#xff08;三&#xff09;大模型的应用举例 二、如何得到大模型 &#xff08;一&#xff09;整体的一般步骤 训练自己的模型 使用预训练模型 选择适当的…...

Nginx 和 网关的关系是什么

分析&回答 Nginx也可以实现网关&#xff0c;可以实现对api接口的拦截&#xff0c;负载均衡、反向代理、请求过滤等。网关功能可以进行扩展&#xff0c;比如&#xff1a;安全控制&#xff0c;统一异常处理&#xff0c;XXS,SQL注入等&#xff1b;权限控制&#xff0c;黑白名…...

解决springboot项目中的groupId、package或路径的混淆问题

对于像我一样喜欢跳跃着学习的聪明人来说&#xff0c;肯定要学springboot&#xff0c;什么sevlet、maven、java基础&#xff0c;都太老土了&#xff0c;用不到就不学。所以古代的聪明人有句话叫“书到用时方恨少”&#xff0c;测试开源项目时&#xff0c;编译总是报错&#xff…...

Vmware 网络恢复断网和连接

如果你的 虚拟机无法联网了&#xff0c;比如&#xff1a; vmware 无法将网络更改为桥接状态: 没有未桥接的主机网络适配器 等各种稀奇古怪的问题&#xff1b; 按照下面操作 还远默认设置 包你解决各种问题&#xff01;...

学生来看!如何白嫖内网穿透?点进来!

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1 搭建虚拟机1.1 下载文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压虚拟机文件1.4 虚拟机初始化1.5 没有搜索到解决方式&#xff1a;1.6 虚…...

C++中的stack和queue

文章目录 1. stack的介绍和使用1.1 stack的介绍1.2 stack的使用 2. queue的介绍和使用2.1 queue的介绍2.2 queue的使用 3 priority_queue的介绍和使用3.1 priority_queue的介绍3.2 priority_queue的使用 4. 容器适配器4.1 什么是适配器4.2 STL标准库中stack和queue的底层结构4.…...

Ubuntu-22.04通过RDP协议连接远程桌面

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、RDP是什么&#xff1f;二、配置1.打开远程桌面功能2.验证服务3.防火墙配置4.测试效果 总结 前言 由于一些特殊需要&#xff0c;我需要通过远程桌面连接到U…...

20230908java面经整理

1.cpp和java的区别 cpp可以多重继承&#xff0c;对表java中的实现多个接口 cpp支持运算符重载、goto、默认函数参数 cpp自动强转&#xff0c;导致不安全&#xff1b;java必须显式强转 java提供垃圾回收机制&#xff0c;自动管理内存分配&#xff0c;当gc要释放无用对象时调用f…...

uniapp 开发App 网络异常如何处理

我对该问题思考的不是很清楚&#xff0c;目前只想到了基本的解决方案 第一、客户端的网络异常&#xff08;断网&#xff09; 1. 断网情况 一定要弹出信息提示&#xff0c;目前最好的解决方式就是在uni.request封装的统一方法中写提示 //1. 封装的网络请求 async function se…...

docker安装常用软件

Linux系统安装docker请参考&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/128176825 docker安装mysql 1、拉镜像&#xff1a;docker pull mysql:8.0.26 2、创建数据目录&#xff1a; mkdir -p /mnt/data/mysql/data mkdir -p /mnt/data/mysql/logs mkdir -p /mn…...

CocosCreator3.8研究笔记(五)CocosCreator 脚本说明及使用(下)

在Cocos Creator中&#xff0c;脚本代码文件分为模块和插件两种方式&#xff1a; 模块一般就是项目的脚本&#xff0c;包含项目中创建的代码、引擎模块、第三方模块。 插件脚本&#xff0c;是指从 Cocos Creator 属性检查器中导入的插件&#xff0c;一般是引入第三方引入库文件…...

Adobe Acrobat Reader界面改版 - 解决方案

问题 日期&#xff1a;2023年9月 Adobe Acrobat Reader下文简称Adobe PDF Reader&#xff0c;此软件会自动进行更新&#xff0c;当版本更新至2023.003.20284版本后。 软件UI界面会大改版&#xff1a;书签页变成了右边、工具栏变到了左边、缩放按钮变到了右下角&#xff0c;如…...

实用调试技巧(2)

文章目录 6. 如何写出好&#xff08;易于调试&#xff09;的代码6.1 优秀的代码&#xff1a;6.2 示范&#xff1a;6.3 const的作用 7. 编程常见的错误7.1 编译型错误7.2 链接型错误7.3 运行时错误 附&#xff1a; 6. 如何写出好&#xff08;易于调试&#xff09;的代码 6.1 优…...

海外ASO优化之如何优化游戏应用

如果我们发布了一款手机游戏或者管理了一款手机游戏&#xff0c;那么需要确保我们的手机游戏对合适的人可见&#xff0c;目的是增加应用的下载量。 1、优化游戏元数据的关键词。 Apple和Google在应用商店中为我们提供有限的空间&#xff0c;来描述手机游戏及其优势。我们需要使…...

SpringMVC: Java Web应用开发的框架之选

引言 在当今的软件开发领域中&#xff0c;Web应用的需求不断增长。为了满足这种需求&#xff0c;各种Web框架应运而生。其中&#xff0c;SpringMVC作为一种优秀的Java Web框架&#xff0c;受到广泛关注和使用。本文将以文章的形式给您讲解SpringMVC的重要概念、工作原理和核心…...

【华为设备升级】AR路由器升级设备软件示例

升级设备软件示例 通过介绍设备升级的具体步骤&#xff0c;帮助用户顺利完成系统设备升级。 组网需求 设备当前系统软件版本已经不能满足用户需要&#xff0c;用户需要更大的规格和部署更多的特性&#xff0c;此时用户需要对系统软件进行升级。 如图1所示&#xff0c;网络中的某…...

Dataset 的一些 Java api 操作

文章目录 一、使用 Java API 和 JavaRDD<Row> 在 Spark SQL 中向数据帧添加新列二、foreachPartition 遍历 Dataset三、Dataset 自定义 Partitioner四、Dataset 重分区并且获取分区数 一、使用 Java API 和 JavaRDD 在 Spark SQL 中向数据帧添加新列 在应用 mapPartition…...

Vue + Element UI 前端篇(十一):第三方图标库

Vue Element UI 实现权限管理系统 前端篇&#xff08;十一&#xff09;&#xff1a;第三方图标库 使用第三方图标库 用过Elment的同鞋都知道&#xff0c;Element UI提供的字体图符少之又少&#xff0c;实在是不够用啊&#xff0c;幸好现在有不少丰富的第三方图标库可用&…...

大学英语四级试卷历年真题及答案PDF电子版百度网盘

大学英语四级备考必备历年真题合集&#xff08;2015年6月-2025年12月&#xff09;&#xff0c;高清 PDF 电子版含完整试卷与详细答案解析&#xff0c;以及配套听力音频&#xff0c;题型齐全答案详实&#xff0c;可下载打印刷题&#xff0c;吃透真题考点&#xff0c;高效冲刺顺利…...

OpCore-Simplify:开源系统硬件适配的自动化配置引擎

OpCore-Simplify&#xff1a;开源系统硬件适配的自动化配置引擎 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在跨平台系统部署领域&#xff0c;硬件…...

终极指南:如何使用IDM激活脚本实现永久免费下载体验

终极指南&#xff1a;如何使用IDM激活脚本实现永久免费下载体验 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager&#xff08;IDM&…...

【蒸汽波风格工业化生产标准】:基于1372张MJ出图数据建模,定义饱和度/噪点/复古失真三维黄金阈值

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;蒸汽波美学的数字解构与范式迁移 蒸汽波&#xff08;Vaporwave&#xff09;并非仅是一种视觉风格或音乐流派&#xff0c;而是一场对晚期资本主义数字界面的戏仿性考古——它通过降速采样、CRT扫描线模拟、80年…...

机场智慧化转型:室内外一体化定位技术如何破解运营与服务难题

1. 项目背景与核心痛点&#xff1a;一个大型机场集团的转型之困 在民航业干了十几年&#xff0c;我亲眼见证了机场从“大号候车室”到“智慧出行枢纽”的演变。今天想聊的&#xff0c;不是那些宏大的概念&#xff0c;而是一个非常具体的案例&#xff1a;陕西某大型机场集团如何…...

PDF怎样转成JPG?3种方法对比与2026实用转换工具推荐

在日常办公和学习中&#xff0c;经常需要将PDF文件转换为JPG图片。无论是为了方便分享、编辑还是压缩存储&#xff0c;PDF转JPG的需求都很普遍。不同的转换方法各有特点&#xff0c;选择适合自己的方案能大幅提升工作效率。本文将为你详细介绍三种主流的PDF转JPG方法&#xff0…...

不止于配置:用Qt给周立功CAN卡写个简易数据收发测试工具(附源码)

从零构建Qt版CAN数据收发测试工具&#xff1a;周立功硬件实战指南 在嵌入式开发领域&#xff0c;CAN总线调试是工程师日常工作中的高频需求。当我们需要验证硬件连接是否正常、测试通信质量或快速检查数据流时&#xff0c;一个轻量级的图形化测试工具能极大提升工作效率。本文将…...

USB PD芯片选型指南:从核心需求到方案对比的工程实践

1. 项目概述&#xff1a;为什么PD芯片选型是个技术活最近在做一个需要USB Type-C接口供电的项目&#xff0c;核心需求是实现完整的PD&#xff08;Power Delivery&#xff09;协议通信。这听起来像是个标准化的活儿&#xff0c;市面上芯片那么多&#xff0c;随便选一个不就行了&…...

戴尔G15散热控制终极指南:免费开源工具TCC-G15告别过热降频

戴尔G15散热控制终极指南&#xff1a;免费开源工具TCC-G15告别过热降频 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否为戴尔G15笔记本在游戏或高强度工…...

如何快速实现碧蓝航线全自动托管:智能脚本Alas终极指南

如何快速实现碧蓝航线全自动托管&#xff1a;智能脚本Alas终极指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧…...