Qt / QML: QImage von C ++ an QML senden und das QImage auf der GUI anzeigen

Ich habe eine Klasse erstelltPublisher welches periodisch aQImage Objekt.

Es fällt mir jedoch schwer, das zu zeichnenQImage zu einem QML-Element. Es scheint, dass dieImage undCanvas QML-Komponenten erfordern aQUrl anstelle einerQImage, aber ich bin nicht sicher, wie ich meine konvertieren sollQImage zu einemQUrl. Edit4: Wenn ich QUrl sage, meine ich nicht, dass ich versuche, ein Bild in eine URL zu konvertieren. Das ist Unsinn. Ich möchte einen Verweis auf dieses Image generieren, das sich nicht auf der Festplatte befindet, und der Datentyp, nach dem QML-Komponenten fragen, ist eine URL.

Ich habe ein paar Nachforschungen angestellt und das herausgefundenQQuickImageProvider bietet eine Lösung, aber ich habe keine Dokumentation gefunden, die erklärt, wie ich meine konvertiereQImage Signal an aQUrl das kann ich zum zeichnen benutzen. Beispielcode oder Referenzdokumentation sind willkommen.

Danke für Ihre Hilfe!

Edit1:

Ich habe hier nachgesehen:http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html und ich sehe nicht, wie ich ein QImage an den Quick Image Provider übergebe und daraus eine QUrl erstelle.

Edit2. Hier ist der Header. Die Implementierung sollte nicht wichtig sein.

class Publisher
{
    Q_OBJECT

public:
    Publisher(QObject* parent = 0);

    virtual ~Publisher(void);

Q_SIGNALS:

    void newImage(const QImage& newImage);
};

Bearbeiten 3. Hier ist mein QML-Code, aber ich weiß nicht, wie ich mein QImage zeichnen soll, so dass dieser Code irgendwie bedeutungslos ist.

meine main.cpp Datei:

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();
}

meine main.qml Datei:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage