日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习:网络应用开发练习(文件下载)

發布時間:2024/9/30 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT学习:网络应用开发练习(文件下载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上篇文章網頁瀏覽實的的基礎上,實現一般頁面文件的下載,并且顯示下載進度。進入設計模式, 向界面上拖入Label、Line Edit、Progress Bar和Push Button等部件。
首先,在“mainwindow.h”文件中添加頭文件和類的前置聲明:

#include <QUrl> class QFile;

其次,添加如下私有槽聲明:

void httpFinished(); void httpReadyRead(); void updateDataReadProgress(qint64,qint64);

再添加一個public()函數聲明:

void startRequest(QUrl url);

再次,添加幾個私有對象定義:

QNetworkReply *reply; QUrl url; QFile *file;

在“mainwindow.cpp”文件中,在構造函數中添加:

ui->progressBar->hide();

這里開始將進度條隱藏了,因此在沒有下載文件時是不顯示進度條的。
接下來添加幾個新函數,首先添加網絡請求函數的實現:

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(updateDataReadProgress(qint64,qint64))); connect(reply,SIGNAL(finished()),this,SLOT(httpFinished())); }

下面添加幾個槽的定義:

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; }

進入設計模式,進入“下載”按鈕的單擊信號的槽,添加如下代碼:

void MainWindow::on_pushButton_clicked() { url = ui->lineEdit->text(); QFileInfo info(url.path()); QString fileName(info.fileName()); file = new QFile(fileName); if(!file->open(QIODevice::WriteOnly)) { qDebug()<<"file open error"; delete file; file = 0; return; } startRequest(url); ui->progressBar->setValue(0); ui->progressBar->show(); }

最終效果如下圖所示,可以輸入一個網絡文件地址,單擊“下載”按鈕將其下載到本地。下載完成后,可在項目工程所在路徑的build-myHTTP-Desktop_Qt_5_9_0_MinGW_32bit-Debug下找到該文件。

總結

以上是生活随笔為你收集整理的QT学习:网络应用开发练习(文件下载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。