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


要使得自己的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界面看到底下的视频。

猜你喜欢

转载自blog.csdn.net/victorwjw/article/details/72884863