QT学习:网络应用开发练习(文件下载)
生活随笔
收集整理的這篇文章主要介紹了
QT学习:网络应用开发练习(文件下载)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上篇文章網頁瀏覽實的的基礎上,實現一般頁面文件的下載,并且顯示下載進度。進入設計模式, 向界面上拖入Label、Line Edit、Progress Bar和Push Button等部件。
首先,在“mainwindow.h”文件中添加頭文件和類的前置聲明:
其次,添加如下私有槽聲明:
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::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学习:网络应用开发练习(文件下载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT学习:网络应用开发练习(简单网页浏览
- 下一篇: QT学习:鼠标事件