如何从 C++ 端多次将 QImage 对象设置为 QML 的 Image 元素?

How to set a QImage object to QML's Image element from C++ side multiple times?

我的 Qt 应用程序中的 C++ 代码端有一个 QImage 对象。

Image {
   id: my_image
   source: ""
}

我有 QML Connections 元素,我正在其中发送 QImage

Connections {
    target: qimage_supplier
    onNewQImage: {
        recalled_media_image.source = new_qimage_supplied
    }
}

问题:
是否可以将 QImage 对象设置为 Image QML 项的源? 执行上述 new_qimage_supplied 实际上是从 C++ 端发送的 QImage 的方式,它会抱怨以下内容:

Error: Cannot assign QImage to QUrl

如何将 QImage 对象设置为 Image QML 元素?

这是一个简单粗暴的示例(不适用于复制和粘贴!)

// 在 main.cpp 中(缺少导入)

class MyImageProvider: public QQuickImageProvider
{
    QImage m_image;
public:
    MyImageProvider(QImage img)
        : QQuickImageProvider(QQuickImageProvider::Image)
        , m_image(img)
    {}

    QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override {
        qDebug() << m_image;
        return m_image;
    }
};

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;   
    engine.addImageProvider("myimg", new MyImageProvider(QImage("C:/.../image.png")));
    engine.load(QUrl(QStringLiteral("main.qml")));

    return app.exec();
}

// 在 main.qml

ApplicationWindow {
    id: rootWin
    width: 800; height: 600; visible: true

    Image {
        source: "image://myimg/1"
    }
}

来源是:

image://registeredNameOfImageProvider/potentialId