wamp网站开发,运输房产网站建设,企业专业网站建设,android项目实战1.常用到的类
QNetworkAccessManager类用于协调网络操作#xff0c;负责发送网络请求#xff0c;创建网络响应
QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号#xff1a;
finished()#xff1a;完成…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
#includeQDir
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 tempDirnewUrl.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