QT http练习——创建一个能够下载URL资源的UI程序,并保存到本地指定目录下
2016-11-04 18:01
465 查看
#include #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include //①前置声明 class QFile; class QNetworkReply; class QNetworkAccessManager; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void startRequest(QUrl url); //声明一个公有的响应函数接收URL private slots: //③声明槽 void httpFinished(); void httpReadyRead(); void updateDataProgress(qint64,qint64); void on_pushButton_clicked(); private: //②定义私有变量 QNetworkAccessManager *manager; Ui::MainWindow *ui; QNetworkReply *reply; QUrl url; QFile *file; }; #endif // MAINWINDOW_H#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); manager = new QNetworkAccessManager(this); //创建一个网络管理实例manager ui->progressBar->hide(); //隐藏进度条 } MainWindow::~MainWindow() { delete ui; } void MainWindow::startRequest(QUrl url) { reply = manager->get(QNetworkRequest(url)); connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead())); connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(updateDataProgress(qint64,qint64))); connect(reply,SIGNAL(finished()),this,SLOT(httpFinished())); } //下载完成,隐藏进度条,关闭文件 void MainWindow::httpFinished() { ui->progressBar->hide(); file->flush(); file->close(); reply->deleteLater(); reply=0; delete file; file=0; } //读取准备好,进行读取文件到file中 void MainWindow::httpReadyRead() { if(file) file->write(reply->readAll()); } //下载过程中,激活进度条动态显示 void MainWindow::updateDataProgress(qint64 bytesRead, qint64 totalBytes) { ui->progressBar->setMaximum(totalBytes); ui->progressBar->setValue(bytesRead); } void MainWindow::on_pushButton_clicked() { QDir *temp = new QDir; //获取QDir的地址,不是复制一个QDir //判断文件夹是否存在 bool exist = temp->exists("./download"); if(exist) QMessageBox::warning(this,tr("creat folder"),tr("The folder is exist!")); else { bool ok = temp->mkdir("./download"); //当文件夹不存在时进行创建 if(ok) QMessageBox::warning(this,tr("creat folder"),tr("Creat the folder successful")); } //从lineEdit获取URL地址 url = ui->lineEdit->text(); QFileInfo info=(url.path()); qDebug()<open(QIODevice::WriteOnly)) { qDebug()<<"file open error"; delete file; file=0; return; } startRequest(url); //获取url ui->progressBar->setValue(0); //设置进度条值从0开始 ui->progressBar->show(); //显示进度条 }
相关文章推荐
- php带密码功能并下载远程文件保存本地指定目录 修改加强版
- 尚未配置为Web项目.指定的本地IIS URL http://localhsst/..要打开项目,需要配置虚拟目录 。是否立即创建虚拟目录
- VS加载项目时报错:尚未配置为Web项目.指定的本地IIS URL http://localhsst/..要打开项目,需要配置虚拟目录 。是否立即创建虚拟目录
- 尚未配置为Web项目.指定的本地IIS URL http://localhsst/..要打开项目,需要配置虚拟目录 。是否立即创建虚拟目录 解决
- php带密码功能并下载远程文件保存本地指定目录 修改加强版
- C#如何生成一个XML文件,并保存在硬盘的指定目录下
- IIS网站已经停止,提示服务器没有及时响应启动或控制请求!本地计算机法启动 World Wide Web Publishing 服务。提示 “错误127: 找不到指定的程序”或者“错误1721,资源不足,无法启动”
- 实现下载指定URL的网上资源
- java 根据url下载图片保存到本地
- Java 下载 HTTP 资源保存到本地
- 改写一个截屏函数,可指定保存目录,存为JPG格式图片
- 创建一个角色到场景的指定坐标,并放到指定目录下
- 在指定目录下创建一个txt文件
- 将一个业务实体对象序列化并保存到站点的指定目录下
- Linux下检测指定目录下的所有打开的文件(包括子目录)并按照原有的目录结构保存一个副本
- opencms中用程序创建目录和资源文件
- [MFC]下载一个url的源文件到本地文件
- 转载:通过URL下载、创建以及显示一个图像
- 这是一个将指定URL地址的网页 抓取为本地网页的代码。
- IIS网站已经停止,提示服务器没有及时响应启动或控制请求!本地计算机法启动 World Wide Web Publishing 服务。提示 “错误127: 找不到指定的程序”或者“错误1721,资源不足,无法启动