QImage进入QML

Fri*_*ich 1 qt jpeg qimage qml

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

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

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

pep*_*ppe 8

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

你可以使用这样的东西作为一种解决方法:

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

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

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

Connections {
    target: myC++ObjectExposedToTheQMLEngine
    onNewFrameReceived: image.reload(); 
}
Run Code Online (Sandbox Code Playgroud)