Impostare una immagine da url in una QLabel
In una QLabel, dovevo visualizzare una immagine da url.
Dove l'url è composto da una parte fissa, e una parte dinamica (che corrisponde all'immagine vera e propria).
Vi propongo il QWidget per intero.
Questo il file di intestazione:
#ifndef ARTICOLOIMGWINDOW_H
#define ARTICOLOIMGWINDOW_H
#include <QWidget>
#include <QUrl>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkAccessManager>
namespace Ui {
class ArticoloImgWindow;
}
class ArticoloImgWindow : public QWidget {
Q_OBJECT
public:
explicit ArticoloImgWindow(QString articolo, QWidget *parent = 0);
virtual ~ArticoloImgWindow();
private slots:
void namFinished(QNetworkReply *reply);
private:
Ui::ArticoloImgWindow *ui;
QNetworkAccessManager *nam;
};
#endif // ARTICOLOIMGWINDOW_H
Questo il file di implementazione:
#include "articoloimgwindow.h"
#include "ui_articoloimgwindow.h"
ArticoloImgWindow::ArticoloImgWindow(QString articolo, QWidget *parent)
: QWidget(parent), ui(new Ui::ArticoloImgWindow) {
ui->setupUi(this);
this->setWindowTitle(articolo);
nam = new QNetworkAccessManager();
connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(namFinished(QNetworkReply*)));
QUrl url("https://www.sito.it/IMMAGINI/" + articolo);
QNetworkRequest request(url);
nam->get(request);
}
void ArticoloImgWindow::namFinished(QNetworkReply *reply) {
if (reply->error() != QNetworkReply::NoError) {
ui->labelImg->setText("ERRORE: " + reply->errorString());
return;
}
QByteArray jpegData = reply->readAll();
QPixmap pixmap;
pixmap.loadFromData(jpegData);
ui->labelImg->setPixmap(pixmap);
}
ArticoloImgWindow::~ArticoloImgWindow() {
delete nam;
delete ui;
}
Dove il parametro articolo corrisponde all'immagine (ad esempio immagine.jpg).
Enjoy!
qt qlabel qwidget qnetworkaccessmanager qnetworkreply
Commentami!