QImage en QML

mon application reçoit un flux en direct de JPEGs sur le réseau (16 images par seconde). Le flux en direct doit être affiché en utilisant QML. La partie de réception est écrite en C++, tout L'UI est écrit en utilisant QML.

Comment introduire les données image dans la fenêtre QML? J'ai cherché comment afficher un QImage, mais je n'ai pas encore trouvé de solution.

implémenter QDeclarativeImageProvider et rafraîchir la source de l'image encore et encore encore une fois, utiliser un nom différent semble être la seule solution, voir http://qt-project.org/doc/qt-4.8/qdeclarativeimageprovider.html .

1
demandé sur Friedrich 2013-07-18 19:53:22

1 réponses

oui, malheureusement l'élément Image manque une méthode update() (pour le réinitialiser de force). définir la même URL source ne déclenchera pas une mise à jour .

vous pouvez utiliser quelque chose comme ceci comme une solution:

Image {
    source: "image://yourImageProvider/something"
    cache: false
    function reload() {
        var oldSource = source;
        source = "";
        source = oldSource;
    }
}

(ou simplement basculer entre deux URLS, avec le même nom de fournisseur, mais des chemins différents...)

vous devriez aussi push those JPEGs vous recevez à la couche QML. Une fois que vous recevez une nouvelle image, vous devriez émettre un signal du côté de C++à partir d'un objet exposé au moteur QML , et connecter ce signal à cette fonction reload() . L'élément Connections vous y aidera.

Connections {
    target: myC++ObjectExposedToTheQMLEngine
    onNewFrameReceived: image.reload(); 
}
7
répondu peppe 2013-07-18 22:21:11