为什么不习惯使用qml?

最近北京下了几场很大的雨,闷热潮湿。

本来期待的曼市德比,场地因素,不能得以进行。

最近,工作有点像全国的天气,有点糟糕。

一个问题一直困扰着,为什么我们那么不习惯使用qml进行逻辑处理。

不可否认,qt是一个伟大的框架,qt quick也是一门利器。但是,在使用qt quick进行windows客户端开发时,一个接一个的坑。

大坑一:
qml中webview如何设置http请求的header?

这个问题一直没得到解决,google泛滥了也是没有解决方案。 
尝试一: 
在qml中显示一个webview非常的简单,然后,不管是在qml中,还是在c++中,很难办到给这个webview设置一个header。

更加烦人的是,c++中是qwebview,而qml中的webview对应的是qquickwebview,真的烦死了。

尝试二: 
我们不在qml中使用webview,而是在c++中产生一个qwebview,然后让这个qwebview显示到qml中。这又是一个坑,c++中的qwebview是一个qwighet,而不是qml中的qquickview,真是烦死了。

等等,您不要误解,我说的是qt5.5之前的webview,好像之后的webview换了内核吧。。。。。

大坑二
qml中的Camera如何在C++中设置viewfinder? 
这也是个棘手的问题,我们使用摄像头,很轻松在qml中添加一个Camera, 然后添加一个ViedoOutput,这样就可以显示这个摄像头了。

但是如果我想拿到这个摄像头的数据怎么办?

我们庆幸在qml中的Camera就是C++中的QCamera,这样我们可以在代码中拿到。

尝试一: 
使用QViedoProbe,然后把它的source设置为camera,这样就可以通过QViedoProbe实时拿到摄像头的数据了。等等,为什么setsource的返回值总是false呢?

google一番之后,才发现,这个官方文档也是蛋疼的很啊,没有在明确的位置写明,目前QViedoProbe对于Camera的处理,只适用于Android,而不适用于windows平台。

尝试二: 
这应该是最多的方法了,对于qt程序应该很起作用,但是对于qt quick程序就完蛋了。 
我们在c++代码中拿到了Camera的对象 camera,这样我们自定义一个subclass,继承自QAbstractVideoSurface,然后设置camera的viewfinder就是QAbstractVideoSurface的一个实例,这样在present函数中,就可以实时获取摄像头的数据。

这是不行的,为什么?因为在qml中我们已经定义了一个ViewOutput,这个已经是一个viewfinder了。

尝试三: 
不再qml中使用Camera,而是在c++中使用QCamera产生一个对象,然后设置viewfinder为QAbstractVideoSurface的一个实例。那么问题又来了,这样又没法再qml中显示了。

尝试四: 
使用 
QAbstractVideoFilter 
QVideoFilterRunnable 
问题解决了,具体的:windows平台上如何获取qml中Camera的数据 将在下一篇博客中进行详细描述。
--------------------- 
作者:一蓑烟雨1989 
来源:CSDN 
原文:https://blog.csdn.net/wangshubo1989/article/details/52029185 
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/u/4000302/blog/3069453

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值