海思HI3798 Qt的使用

转载于:www.acodelife.cn

硬件:HI3798MV200 软件:Qt5.5.1 + linux

简述: 在单纯的ARM嵌入式平台编写Qt程序,只需要交叉编译Qt,然后把相应的库移植到平台就可以了。但是在海思平台不行。因为海思还有视频的。海思的视频是显示在视频层,而Qt则显示在图形层。运行Qt应用程序后,会遮挡视频层的视频。因此,在播放视频的窗口,需要隐藏Qt界面。并且在海思上运行起Qt程序,也不是那么容易哦。

Qt平台插件 Qt有多个平台插件供嵌入式Linux系统使用,如:EGLFS,LinuxFB,DirectFB,Waylan 。可以通过QT_QPA_PLATFORM 选项设置自己的平台。 我们主要介绍EGFLS平台插件常用配置: * QT_QPA_EGLFS_FB覆盖Framebuffer设备。默认的配置是/dev/fb0。 * QT_QPA_EGLFS_PHYSICAL_WIDTH和QT_QPA_EGLFS_PHYSICAL_HEIGHT-屏幕宽度和高度物理尺寸,单位是毫米

海思HIFB Hisilicon Framebuffer(以下简称HiFB)是海思数字媒体处理平台提供的用于管理叠加图像层的模块,它不仅提供Linux Framebuffer 的基本功能,还在Linux Framebuffer的基础上增加层间ColorKey、层间ColorKey mask、层间Alpha、原点偏移等扩展功能。

Linux Framebuffer 是一个子设备号对应一个显卡,HiFB 则是一个子设备号对应一个叠加图像层,HiFB 可以管理多个叠加图像层,具体个数和芯片相关。 海思framebuffer 的设备名称与硬件图层物理图层一一对应。规定如下:/dev/fb0、/dev/fb1、/dev/fb2 分别对应高清图层0 和1、2;/dev/fb3 对应硬件鼠标层;/dev/fb4 对应标清图层0。对应关系以芯片默认的状态为主。某些平台可以动态将图层绑定到不同的输出上,比如:标清绑定到高清输出,但其默认的图层仍然是标清,并不是高清。 通过模块加载参数,可以控制 HiFB 管理其中的一个或多个叠加图像层,并像操作普通文件一样操作叠加图像层。

我的Qt配置

/etc/profile
export LD_LIBRARY_PATH=/usr/lib/qt/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins/
export QT_QPA_FONTDIR=/usr/lib/qt/lib/fonts
export QT_QPA_PLATFORM=eglfs
export QT_QPA_EGLFS_FB=/dev/fb0
export FB_FRAMEBUFFER_0=/dev/fb0
export QT_QPA_EGLFS_PHYSICAL_WIDTH=597.6
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=336.15
我的Qt程序注意的地方
Qt界面透明切换为不透明,开始使用的是 // setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); 和 setAttribute(Qt::WA_TranslucentBackground,false);

折腾了一下午,没啥效果。还以为是哪里的问题。
后面改为
// setWindowOpacity(0) ; setWindowOpacity(1) ;

好了。
暂时写到这吧,我自己也没弄明白,如有错误,请多多指教。

转载于:www.acodelife.cn

猜你喜欢

转载自blog.csdn.net/wo_Niu123/article/details/84960206