关键是:QNetworkAccessManager类用来协调网络操作,可以调度创建好的请求,并发射信号来报告进度。

运行截图如下:

代码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class QNetworkReply;
class QNetworkAccessManager;
#include <QUrl>
class QFile;namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void startRequest(QUrl url);private slots:void httpFinished();void httpReadyRead();void updateProgress(qint64,qint64);void on_pushButton_clicked();private:Ui::Widget *ui;QNetworkAccessManager *manager;QNetworkReply *reply;QUrl url;QFile *file;};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QtNetwork>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("CSDN IT1995");manager=new QNetworkAccessManager(this);ui->progressBar->hide();connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_clicked()));
}Widget::~Widget()
{delete ui;
}void Widget::startRequest(QUrl url)
{reply=manager->get(QNetworkRequest(url));connect(reply,&QNetworkReply::readyRead,this,&Widget::httpReadyRead);connect(reply,&QNetworkReply::downloadProgress,this,&Widget::updateProgress);connect(reply,&QNetworkReply::finished,this,&Widget::httpFinished);
}void Widget::httpFinished()
{ui->progressBar->hide();if(file){file->close();delete file;file=0;}reply->deleteLater();reply=0;
}void Widget::httpReadyRead()
{if(file)file->write(reply->readAll());
}void Widget::updateProgress(qint64 byteRead, qint64 totalBytes)
{ui->progressBar->setMaximum(totalBytes);ui->progressBar->setValue(byteRead);
}void Widget::on_pushButton_clicked()
{url=ui->lineEdit->text();QFileInfo info(url.path());QString fileName(info.fileName());if(fileName.isEmpty())fileName="index.html";file=new QFile(fileName);if(!file->open(QIODevice::WriteOnly)){delete file;file=NULL;return;}startRequest(url);ui->progressBar->setValue(0);ui->progressBar->show();
}

main.cpp

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

Qt学习笔记-http服务的初步认识(使用程序下载网站上的图片)相关推荐

  1. VSTO学习笔记(四)从SharePoint 2010中下载文件

    原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...

  2. 34.Oracle深度学习笔记——12C的AWR初步解读

    34.Oracle深度学习笔记--12C的AWR初步解读 关于AWR,蛤蟆也经常看.因为经常看别人给出的建议,很难有深刻体会.对此,计划花费几个晚上时间好好体会一把并记录下来.此处以单实例为例.列出目 ...

  3. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  4. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  5. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

  6. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  7. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

  8. Qt学习笔记之国际化

    国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. 1. 相关的Qt类和AP ...

  9. Qt学习笔记之 字符串类型小结

    1. Qt常用字符串类型 1.1 QString QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见<Qt学 ...

最新文章

  1. 综述:植物相关微生物群在传统草药中的作用
  2. 最强奥运会(互联网公司版)
  3. 一个项目的性能优化经验
  4. MFC Attach()函数和Detach()函数
  5. win7系统如何更改密码策略
  6. iphone录屏没内部声音_安卓手机如何录屏?手机高清录屏指南
  7. c++ 编译添加dll_Windows下osg编译
  8. Linux环境下编程有哪些优势?
  9. 解决IE9,hack 设置背景图无效
  10. 删库跑路是程序员最后的倔强?
  11. 30岁软件测试转产品_补水抗皱紧致护肤产品盘点 护肤品排行榜前十名适合30-40岁...
  12. 微信支付之异步通知签名错误
  13. linux a7 a8,iOS12 A7/A8 固定Generator值 图文教程
  14. Kali内Nmap端口扫描与高级扫描
  15. 雷电模拟器 手机模拟器 安装 连接
  16. Python人脸识别——从入门到工程实践
  17. EPICS IOC Shell
  18. 初始化MYSQL时的几个问题
  19. 架构师进阶之路——1、持久化框架(一)
  20. java毕业设计项目选题基于SSM+JSP+MYSQL+H-UI 实现的校园食堂点餐|订餐系统

热门文章

  1. centos5.3安装vmware
  2. 初学C语言没有项目练手怎么行,这17个小项目收下不谢
  3. 职场老油条靠它升职后:还用Excel手动做报表?想想就可笑
  4. openeim再被刺也忍着痛继续吃
  5. 五一期间,飞鸽传书我又更新了。
  6. I-EIM分享一套局域网通讯源码
  7. 从 VC7 的 CHtmlView 不能正常退出谈 CComPtr 使用中的一个误区
  8. 新浪uc2010免费下载
  9. 恶意软件清理助手2008(测试版) 20080707
  10. C++是一种糟糕的语言 Linux之父炮轰C++