Qt / QML: Envie QImage do C ++ para o QML e exiba o QImage no GUI

Eu criei uma turmaPublisher que periodicamente emite umQImage objeto.

No entanto, estou tendo dificuldades para desenharQImage para um elemento QML. Parece que oImage eCanvas Os componentes QML requeremQUrl em vez de umQImage, mas não sei como converter meuQImage para umQUrl. Edit4: Quando digo QUrl, não quero dizer que estou tentando converter uma imagem em um URL. Isso não faz sentido. Quero dizer, quero gerar uma referência a essa imagem, que não está no disco, e o tipo de dados que os componentes da QML estão solicitando é uma URL.

Eu fiz algumas pesquisas e descobri queQQuickImageProvider fornece uma solução, mas não encontrei nenhuma documentação explicando como converterQImage sinal para umQUrl que eu posso usar para desenhar. Qualquer código de exemplo ou documentação de referência seria apreciado.

Obrigado pela ajuda!

Edit1:

Eu dei uma olhada aqui:http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html e eu não vejo como eu passo um QImage para o provedor de imagem rápida e a partir dele crie um QUrl.

Edit2. Aqui está o cabeçalho. A implementação não deve ser importante.

class Publisher
{
    Q_OBJECT

public:
    Publisher(QObject* parent = 0);

    virtual ~Publisher(void);

Q_SIGNALS:

    void newImage(const QImage& newImage);
};

Edit 3. Aqui está o meu código QML, mas não sei como desenhar o meu QImage, então este código é meio sem sentido.

meu arquivo main.cpp:

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    qmlRegisterType<Publisher>("Components", 1, 0, "Publisher");

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/QQuickViewExample/main.qml"));
    viewer.showExpanded();

    return app.exec();
}

meu arquivo main.qml:

import QtQuick 2.0
import Components 1.0

Rectangle {
    id : testRect
    width: 360
    height: 360

    Image{
        anchors.fill: parent
        id: myImage

        Publisher {
            id: myPub

            onNewImage: {
                myImage.source = newImage;  #I know this doesnt work, it needs a QUrl and not a QImage
            }
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion