很多年没有写过东西了,换工作后使用Qt,很多东西都是在优快云上找,这里也记录一些碰到的问题和解决方法。
目前做的产品需要有一个倒车影像(根据功能不同,可能还需要更多的摄像头显示)。之前的项目已经有了一个摄像头显示的实现,是基于 Qt Widget的方式,目前项目是使用QML做界面,如何实现摄像头功能就成了一个问题。
1. QML有一个MultiMedia的model, 但是这个在我们的系统还没有包含,所以用不了。
2. 在QML中嵌入Widget来显示。
3. 实现一个QML的model,直接在QML中调用这个model就可以。
目前后面两种方法都实现了,但是QML的方式有点问题。所以暂时使用第二种方式来做。
如何在QML中使用Widget,网上查了资料,好多都是在Widget中使用QML的,但是如何在QML中使用Widget的很少,还有提到说无法再QML中使用Widget的。 后来找到这个帖子的内容,在Main函数调用Widget,就可以把这个Widget显示在QML的界面中。
https://blog.youkuaiyun.com/r5014/article/details/72528418
要在QML中使用Widget,在Main函数中,要使用QApplication app(argc,argv)。而不能用QGuiApplication app(argc,argv)。之后可以通过调用setVisible来控制该Widget是否显示。
在解决了上述问题之后, 同事在测试时发现,在切入到倒车影像界面后, CPU使用率达到了40%多。如果有2个Camera界面,CPU使用可以达到将近90%。 同事比较疑惑, 我们的设备上是有GPU的,为什么CPU占用会这么高。
这个问题很难搞啊,Qt是换工作刚学,底层驱动也看不到。Camera的实现是使用GStreamer的结构,OpenGL也完全不懂。每一部分都有的好研究一番

最低0.47元/天 解锁文章
1904





