QT5在海思安防平台上的UI应用一些优化方法

   在海思安防平台上开发,一般是有对视频的需求在里面,这里总结一下,在使用QT.5.5时,针对平台的一些处理方法。

  1. 视频层显示

       视频使用芯片的解码,在是显示时,显示在视频层,UI使用FB操作显示,显示在图形层,这样需要透过图形层,显示视频层,芯片上这里有两种方式,一种是colorkey,一种是alpha透明的方法,如果QT使用ARGB8888就使用colorkey方法,ARGB1555可以使用colorkey或alpha方法。

      2. 图形层刷新方式

  QT需要使用了buff的方式来绘图展示UI,但在平台上还是可以明显的看到一些绘制的过程,这可以使用海思平台的的FB的双缓存方式解决,在QT的Linuxfb插件中调用海思平台的FB操作来一次刷新绘制好的结果,这样效果看起来还是好很多,不会有QT制图感觉整个图形层在动的感觉,当然这样处理后,会有一定的延迟感觉,但并不明显。

       3.分辨率自适应

  自适应可以在自己的应用中做处理,也可以使用海思平台的TDE功能来做,各有优缺点吧,在应用中做麻烦,每一个界面都需要考虑不同分辨率的问题;

  这里使用TDE的方式来做,当然这样的做法,如果设计的是大的分辨率的效果,适应小分辨时会出现字体和图标模糊的问题。这里在设置时按1024*768的最小分辨率设计,在使用TDE放大输出到1280*1024, 1440*900,1080P,2K,4K输出都是清楚可见的。使用TDE的surface里的放大功能即可,性能方面1秒刷新5帧以上完全没有问题!

     4.鼠标卡顿问题

  在使用中发现操作鼠标时,如果UI主界面有刷新操作,经常会鼠标操作移动不流畅,这里因为鼠标也是在UI主线程中更新的,海思平台上专门有一个鼠标图形层,处理方式是在QT的input外设的插件中,开启一个线程来读鼠标设备和更新鼠标位置.

     5.运行时切换分辨率的问题

  这样个问题,现在也没有找到解决方法,原因是没有找到QT的方法去动态的重建linuxfb插件里的这个对像,所以来在切换分辨率时,需要用户重启设备,体验很不好,有知道方法的麻烦指教一下!   

  QT库还是很强大的,比起以前自己写UI库,或使用UCGUI, MINIGUI这些库,满满的幸福感啊!但然qt编译出来还是有些大如果用16MB的flash是基本放不下的!

 

你可能感兴趣的:(其它,C/C++)