使用qt 获取一张网络图片,并将这张图片显示在qml 上

#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"
}

posted @ 2024-07-03 14:10  Azuki_op  阅读(196)  评论(0)    收藏  举报