QT学习 最简单的 文件下载器
来源:互联网 发布:f999b隔墙听淘宝有卖吗 编辑:程序博客网 时间:2024/06/07 16:45
注意在pro的配置文件 引入
QT += network头文件 头文件主要声明一些方法和变量
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QtNetwork>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void startRequest(QUrl url); //请求链接private slots: void on_pushButton_clicked(); //下载按钮的单击事件槽函数 void httpFinished(); //完成下载后的处理 void httpReadyRead(); //接收到数据时的处理 void updateDataReadProgress(qint64,qint64); //更新进度条private: Ui::MainWindow *ui; QNetworkAccessManager *manager;//请求网络的对象 QNetworkReply *reply;//出来返回结果的对象 QUrl url; //存储网络地址 QFile *file; //文件指针};#endif // MAINWINDOW_H
界面是一个progressbar 和一个 lineedit
不展示
然后是主文件
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); manager = new QNetworkAccessManager(this); ui->progressBar->hide();}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_pushButton_clicked(){ url = ui->lineEdit->text(); //获取在界面中输入的url地址,如: http://zz.onlinedown.net/down/laolafangkuaijin.rar QFileInfo info(url.path()); QString fileName(info.fileName()); //获取文件名 if (fileName.isEmpty()) fileName = "index.html"; //如果文件名为空,则使用“index.html”, //例如使用“http://www.yafeilinux.com”时,文件名就为空 file = new QFile(fileName); if(!file->open(QIODevice::WriteOnly)) { //如果打开文件失败,则删除file,并使file指针为0,然后返回 qDebug() << "file open error"; delete file; file = 0; return; } startRequest(url); //进行链接请求 ui->progressBar->setValue(0); //进度条的值设为0 ui->progressBar->show(); //显示进度条}void MainWindow::startRequest(QUrl url) //链接请求{ reply = manager->get(QNetworkRequest(url)); / connect(reply,SIGNAL(finished()),this,SLOT(httpFinished()));//当reply执行完毕后激发httpFinished方法 //下载完成后 connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead()));//当读取replay准备ok后就调用httpReadyRead方法读取内容并写入文件 //并且根据读取进度更新进度条 connect(reply,SIGNAL(downloadProgress(qint64,qint64)), this,SLOT(updateDataReadProgress(qint64,qint64)));}void MainWindow::httpReadyRead() //有可用数据{ if (file) file->write(reply->readAll()); //如果文件存在,则写入文件}void MainWindow::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes) { ui->progressBar->setMaximum(totalBytes); //最大值 ui->progressBar->setValue(bytesRead); //当前值}void MainWindow::httpFinished() //完成下载{ ui->progressBar->hide(); file->flush(); file->close(); reply->deleteLater(); reply = 0; delete file; file = 0;}
代码http://dl.vmall.com/c0eas3ijfn
- QT学习 最简单的 文件下载器
- qt学习最简单的例子
- QT学习,最简单的Web浏览器
- 最简单的方式实现文件下载
- html5实现最简单的文件下载
- Qt学习------简单的文件拖放操作
- 最简单防止网站文件被下载的方法
- 文件下载IllegalStateException 最简单的解决办法直接return null
- 小白学编程:最简单的web文件下载
- centos 远程登录 最简单的 文件上传 下载
- qt入门,最简单的qt程序
- 简单的文件下载
- 简单的文件下载
- C语言 简单的文件下载器
- 一个最简单的QT数字时钟
- QT最简单的打包发布技巧
- Qt之最简单的绘图程序
- 一个最简单的爬虫-HTML下载器
- 第八次上机实验课
- iOS 协同开发 问题
- 黑马程序员_Java基础加强之反射
- SQL Server 2008 报错 1069错误(由于登录失败而无法启动服务)解决方法
- 关于把CGRect坐标存入NSArray数组方法
- QT学习 最简单的 文件下载器
- ORA-12519错误的解决方法
- (转)内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- java的System.getProperty()方法可以获取的值
- application、session、request、page 4个JSP内置对象详细介绍
- ubuntu 下无法启动chrome
- 直接插入排序
- GetWindowDC-BeginPaint-GetDC 区别详解
- iis6 伪静态 iis配置方法 【图解】