输入Url,可以下载文件例程,效果如图:

下面是代码部分:

Pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2016-07-09T17:44:18
#
#-------------------------------------------------QT       += core gui
QT += networkgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = myHTTP
TEMPLATE = appSOURCES += main.cpp\mainwindow.cppHEADERS  += mainwindow.hFORMS    +=

mainwindow.h

#pragma once#include <QObject>
#include <QDialog>
#include <QUrl>
#include <QNetworkRequest>
#include <QDialog>class QLabel;
class QGroupBox;
class QPushButton;
class QTextBrowser;
class QNetworkAccessManager;
class QNetworkReply;
class QFile;
class QProgressBar;
class QLineEdit;class MainWindow : public QDialog
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:QLabel *m_pInputLab;QPushButton *m_pUpdateBtn;QPushButton *m_pCancelBtn;QFile *m_pDownloadFile;QProgressBar *m_pProgressbar;QLineEdit *m_pAddressEdit;QUrl m_pDownloadUrl;QNetworkAccessManager *m_pHttpManager = NULL;QNetworkReply *m_pNetworkReply = NULL;private slots:void OnUpdateBtnclickedSlot(void);void HttpDwnReadyRead();void UpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes);void HttpDwnFinished();private:void InitCtrl(void);void StartRequestDownload(QUrl url);
};

mainwindow.cpp

#include "MainWindow.h"
#include <QLabel>
#include <QPushButton>
#include <QGroupBox>
#include <QProgressBar>
#include <QLineEdit>
#include <QGridLayout>
#include <QTextBrowser>
#include <QVBoxLayout>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QTextCodec>
#include <QJsonParseError>
#include <QJsonObject>
#include <QFile>
#include <QFileInfo>
#include <QMessageBox>
#include <QEventLoop>
#include <QTimer>
#include <QProcess>MainWindow::MainWindow(QWidget *parent):QDialog(parent)
{Qt::WindowFlags flags = Qt::Dialog;flags |= Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint;this->setWindowFlags(flags);this->resize(500,50);InitCtrl();
}
MainWindow::~MainWindow(void)
{}void MainWindow::InitCtrl(void)
{m_pInputLab   = new QLabel(tr("Please input the url"),this);m_pUpdateBtn  = new QPushButton(tr("Download"),this);m_pCancelBtn  = new QPushButton(QStringLiteral("Cancel"),this);m_pProgressbar= new QProgressBar(this);m_pAddressEdit = new QLineEdit(this);m_pAddressEdit->setText("http://slproweb.com/download/Win64OpenSSL_Light-1_1_1k.exe");m_pProgressbar->setVisible(false);QGridLayout *gridlayout = new QGridLayout();gridlayout->addWidget(m_pInputLab,0,0,1,2);gridlayout->addWidget(m_pAddressEdit,1,0,1,2);gridlayout->addWidget(m_pProgressbar,2,0,1,2);gridlayout->addWidget(m_pUpdateBtn,3,0,1,1);gridlayout->addWidget(m_pCancelBtn,3,1,1,1);setLayout(gridlayout);m_pHttpManager    = new QNetworkAccessManager(this);connect(m_pUpdateBtn,SIGNAL(clicked()),this,SLOT(OnUpdateBtnclickedSlot()));}void MainWindow::StartRequestDownload(QUrl url)
{QNetworkRequest request;request.setUrl(url);
//    request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);m_pNetworkReply = m_pHttpManager->get(request);connect(m_pNetworkReply, &QNetworkReply::readyRead, this, &MainWindow::HttpDwnReadyRead);connect(m_pNetworkReply, &QNetworkReply::downloadProgress,this, &MainWindow::UpdateDataReadProgress);connect(m_pNetworkReply, &QNetworkReply::finished, this, &MainWindow::HttpDwnFinished);
}void MainWindow::HttpDwnReadyRead()
{if (m_pDownloadFile) m_pDownloadFile->write(m_pNetworkReply->readAll());
}void MainWindow::UpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes)
{m_pProgressbar->setMaximum(totalBytes);m_pProgressbar->setValue(bytesRead);
}void MainWindow::HttpDwnFinished()
{m_pProgressbar->hide();if(m_pDownloadFile) {m_pDownloadFile->close();delete m_pDownloadFile;m_pDownloadFile = nullptr;}m_pNetworkReply->deleteLater();m_pNetworkReply = nullptr;}void MainWindow::OnUpdateBtnclickedSlot(void)
{#if (1)m_pDownloadUrl = m_pAddressEdit->text();QFileInfo info(m_pDownloadUrl.path());QString fileName(info.fileName());if (fileName.isEmpty()) fileName = "unknown";m_pDownloadFile = new QFile(fileName);if(!m_pDownloadFile->open(QIODevice::WriteOnly)){delete m_pDownloadFile;m_pDownloadFile = nullptr;return;}StartRequestDownload(m_pDownloadUrl);m_pProgressbar->setVisible(true);m_pProgressbar->setValue(0);m_pProgressbar->show();
#endif}

main.cpp

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

下载地址:

https://download.csdn.net/download/u010505080/16686840

Qt QNetworkAccessManager 下载url相关推荐

  1. python下载图片-Python下载URL图片

    所谓下载URL图片就是指通过网络图片的URL去用脚本自动获取和下载图片到本地. 这里介绍两种方法,一种需要用到第三方库requests,一种直接使用Python自带的库urllib. 首先找到你要下载 ...

  2. python下载的库要放到哪里-Python下载url并保存文件的三种方法

    本节主要内容: 学习python下载Url并保存文件的方法. Python中通常是使用Http利用urllib或urllib2模块来下载url中的内容. 当然也可以利用ftplib从ftp站点下载文件 ...

  3. [转] 三种Python下载url并保存文件的代码

    原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...

  4. java 中文 转义_java下载url路径包含中文需要转义的操作

    大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters a ...

  5. QT从下载到安装的具体教程

    QT从下载到安装的具体教程 QT安装包的下载 软件的安装 window下的安装操作: 因为最近需要用到QT进行开发(为什么不是用MFC!!!,我们mfc什么时候才能站起来呀,23333) QT安装包的 ...

  6. QQ音乐关键字搜索并生成下载url

    QQ音乐关键字搜索并生成下载url 1. 获取搜索的歌单信息 ​ 通过在QQ音乐进行关键字搜索,并通过F12检测,发现网页给网站https://c.y.qq.com/soso/fcgi-bin/cli ...

  7. 网易云音乐关键字搜索并生成下载url

    网易云音乐关键字搜索并生成下载url 一.获取搜索的歌单信息 ​ 通过在网易云音乐进行关键字搜索,并通过F12检测,发现网页给网站https://music.163.com/weapi/cloudse ...

  8. 酷狗音乐关键字搜索并生成下载url

    酷狗音乐关键字搜索并生成下载url 1. 获取搜索的歌单信息 ​ 通过在酷狗音乐进行关键字搜索,并通过F12检测,发现网页给网站发送了get请求. https://complexsearch.kugo ...

  9. windoes 平台 Qt 的下载与安装-(Qt 5.15.2 LTS,这是一个长期支持版本)

    Qt 是一个跨平台的 C++图形用户界面应用程序框架 (1)windoes 平台 Qt 的下载与安装: Qt 5.15之前的版本可以离线安装,直接下载离线安装包即可: 下载地址:https://dow ...

最新文章

  1. 解决Javascript疲劳的方法-以及其他所有疲劳
  2. swagger php修改成中文,PHP使用swagger自动生成API文档
  3. postsql 10.4安装失败
  4. AWVS12 防止反复注册
  5. 嵌入式UWB定位测距设备开发实战(7)硬件之天线选型
  6. Python基于机器视觉的图像风格迁移
  7. soap python_Zeep: Python SOAP 客户端
  8. 服务器防火墙的作用是什么?如何设置?
  9. Win10多用户远程桌面
  10. IntelliJ inspection gives “Cannot resolve symbol“ but still compiles code
  11. 解决IDEA创建maven项目时没有src目录
  12. 太强了!阿里大牛撸出来32W字Java面试手册,GitHub已标星72
  13. CCNA培训(一)20210710day01
  14. linux 网卡对应网口查看方式
  15. 半监督学习 图像分类_自我监督学习的图像分类。
  16. Doom 3 GPL source release
  17. Ubuntu Linux入门到精通
  18. DNS欺骗攻击——实现受害者访问任何网站都转向到攻击者指定的网站 (仅供学习参考)
  19. 西门子 S7协议 数据位
  20. 深度技术Windows 7 旗舰五周年纪念版(2011.04)

热门文章

  1. 网络安全(数据库等)
  2. windows启动盘
  3. 第三届中国移动开发者大会(MDCON.2015)
  4. SWT学习|常用组件及参数
  5. scanf函数和回车、空格 及其返回值
  6. mysql slave_pending_jobs_size_max_MySQL:关于Wating for Slave workers to free pending events等待...
  7. 268. Missing Number(缺失数字)
  8. 什么叫集群?如何实现集群?
  9. 解决C Runtime R6034的错误
  10. $().each和$.each()