Qt5.8 (1).網(wǎng)絡(luò)圖片下載與顯示

1. 實現(xiàn)效果如下圖

最終效果

2.核心源代碼

(1) mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QNetworkAccessManager>
#include <QNetworkReply>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:


private slots:
    void on_m_pBtn_clicked();
    void replyFinished(QNetworkReply *reply);

private:
    Ui::MainWindow *ui;

    QNetworkAccessManager netManager;

};

#endif // MAINWINDOW_H

(2) mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>

MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   ui->m_pBtn->setText("Start Download");

   ui->imageLabel->setFixedSize(100,100);
   ui->imageLabel->setScaledContents(true);

   connect(&netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

}

MainWindow::~MainWindow()
{
   delete ui;
}

void MainWindow::on_m_pBtn_clicked()
{
   ui->m_pBtn->setEnabled(false);

   QUrl url;
   url = QUrl(ui->urlInput->text());

   QNetworkRequest request;
   request.setUrl(url);

   netManager.get(request);

}

void MainWindow::replyFinished(QNetworkReply *reply)
{
   ui->m_pBtn->setEnabled(true);

   if(reply->error() == QNetworkReply::NoError)
   {
       QByteArray bytes = reply->readAll();
       QPixmap pixmap;
       pixmap.loadFromData(bytes);
       ui->imageLabel->setPixmap(pixmap);

       QFile file("E:/test.png");
       if (file.open(QIODevice::Append))
       {
           file.write(bytes);
       }
       file.close();
   }
   else
   {
       qDebug() << "Error\n";
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容