#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QUrl>
#include <QImage>
#include <QQuickImageProvider>
class ImageProvider : public QQuickImageProvider {
public:
ImageProvider() : QQuickImageProvider(QQuickImageProvider::Image) {}
QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override {
Q_UNUSED(id);
Q_UNUSED(size);
Q_UNUSED(requestedSize);
return m_image;
}
void setImage(const QImage &image) {
m_image = image;
}
private:
QImage m_image;
};
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://example.com/image.jpg")));
QObject::connect(reply, &QNetworkReply::finished, [&]() {
if (reply->error() == QNetworkReply::NoError) {
QImage image = QImage::fromData(reply->readAll());
ImageProvider *imageProvider = new ImageProvider();
imageProvider->setImage(image);
engine.addImageProvider("networkImage", imageProvider);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
}
reply->deleteLater();
});
return app.exec();
}
import QtQuick 2.0
Image {
source: "image://networkImage"
}