QImage进入QML

时间:2013-07-18 15:53:22

标签: qt jpeg qml qimage

我的应用程序通过网络(每秒16帧)接收JPEG的实时流。应使用QML显示实时流。接收部分用C ++编写,所有UI都是用QML编写的。

如何将图像数据导入QML窗口?我已经了解了如何显示QImage,但我还没有找到解决方案。

实现QDeclarativeImageProvider并使用不同的名称反复刷新图像源似乎是唯一的解决方案,请参阅http://qt-project.org/doc/qt-4.8/qdeclarativeimageprovider.html

1 个答案:

答案 0 :(得分:7)

是的,遗憾的是Image元素缺少update()方法(强制重置它)。 设置完全相同的源URL不会触发更新

您可以使用类似的方法作为解决方法:

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

(或者只是在两个URL之间切换,使用相同的提供者名称,但路径不同......)

您还应该那些您收到的JPEG推送到QML图层。一旦你收到一个新的图像,你应该从C ++的一侧发出一个信号,从一个暴露在QML引擎中的对象,并将该信号连接到该reload()函数。 Connections元素可以帮助您。

Connections {
    target: myC++ObjectExposedToTheQMLEngine
    onNewFrameReceived: image.reload(); 
}