视频和QT的GUI显示到LCD的不同显示层—透过GUI能看到视频

xiaoxiao2021-02-27  170

 要使得自己的QT应用程序能够分层透明,把下面层的视频显示出来要分四步。

1、将你的QT应用放到靠上的FB层。从底层到上层的顺序是FB0,FB1..FB4, 这样你可以把QT应用程序放到FB4,把你的视频显示放到FB0或者其他都行。

对于三星tiny4412开发板,可以到/bin/setqt4env 文件中进行修改,调整QT程序显示的FB层。 echo "set QWS_DISPLAY" #export QWS_DISPLAY=:1 export QWS_DISPLAY=LinuxFb:/dev/fb4 #export QWS_DISPLAY=LinuxFb:/dev/fb0

(仅针对SX4412注意:setqt4env是在/bin/qt4脚本中调用的,在qt4中要用source /bin/setqt4env  然后在qt4脚本中接下来就可以启动诸如视频显示程序和qt应用程序,只要source才能立即生效。否则无法达到调整显示层的目的。)

2、使得你的各个FB层透明,需要直接操作Frambuffer,就是依次把这几个FB层的都赋值刷成透明的。

刷Frambuffer可以参考我这个帖子14楼的代码: http://bbs.csdn.net/topics/390849603

3、使得QWS服务器的背景透明,默认是绿色的。刷QWS服务器背景的话可以在QT程序中使用以下代码: QWSServer::setBackground(QColor(0,0,0,0));

4、使得QT应用程序的背景透明,可以采用两种方法: (1)使用一张透明的图片做背景。。         setAutoFillBackground(true);         QPalette palette;         QPixmap pixmap;         pixmap.load(":/etc/images/view1");  //view1是一张背景透明的图片         QPixmap newmp = pixmap.scaled(gSize, Qt::IgnoreAspectRatio);         palette.setBrush(QPalette::Background, QBrush(newmp));         setPalette(palette);

(2)使用调色板把背景设置成透明。         QPalette pal = palette();         pal.setColor(QPalette::Background, QColor(0x00,0x00,0x00,0x00));         setPalette(pal);

总结: 经过以上几个步骤,如果你现在写了两个程序一个QT界面程序,一个视频显示程序,你就可以在两个FB层中分别显示他们,将视频显示程序放到下层FB,QT界面放到上层FB,这时

候QT界面就相当于视频的OSD,可以透过QT界面看到底下的视频。

转载请注明原文地址: https://www.6miu.com/read-13765.html

最新回复(0)