我的应用程序通过网络接收 JPEG 实时流(每秒 16 帧)。直播流应使用 QML 显示。接收部分是用C++编写的,所有UI都是用QML编写的。
如何将图像数据输入 QML 窗口?我已经研究过如何显示 QImage,但还没有找到解决方案。
实现 QDeclarativeImageProvider 并使用不同的名称一遍又一遍地刷新图像源似乎是唯一的解决方案,请参阅http://qt-project.org/doc/qt-4.8/qdeclarativeimageprovider.html http://qt-project.org/doc/qt-4.8/qdeclarativeimageprovider.html.
是的,不幸的是Image
元素缺少一个update()
方法(强制重置)。设置完全相同的源 URL 将不会触发更新.
您可以使用类似的方法作为解决方法:
Image {
source: "image://yourImageProvider/something"
cache: false
function reload() {
var oldSource = source;
source = "";
source = oldSource;
}
}
(或者只是在两个 URL 之间切换,具有相同的提供程序名称,但路径不同......)
你也应该push您收到 QML 层的那些 JPEG。收到新图像后,您应该从 C++ 端从暴露给 QML 引擎的某个对象发出信号,并将该信号连接到reload()
功能。这Connections
element 会帮助你。
Connections {
target: myC++ObjectExposedToTheQMLEngine
onNewFrameReceived: image.reload();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)