Chinaunix首页 | 论坛 | 博客
  • 博客访问: 433227
  • 博文数量: 55
  • 博客积分: 2235
  • 博客等级: 大尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-14 13:34
文章分类
文章存档

2012年(2)

2011年(26)

2010年(1)

2009年(20)

2008年(6)

我的朋友

分类:

2011-04-02 17:34:30

在嵌入式平台,我们使用的QT会是以QWS方式运行,即会先运行QWSServer,再运行实际的窗体,在该情况下,默认QWS背景会是绿色的,而在嵌入 式上,很多方案都会将video和graphic层分开,两层的层叠也是可调的,当需要在video上面做一些控制图标等,此时就需要将gfx调到vid 之上,此时就需要将运行于gfx的qt程序设置背景透明,共需要设置两处:一处是QWS,一处是窗体。对此,我们使用qtcreator创建一个基于 widget的程序(即继承于QWidget类),在构造函数中添加如下代码:
    setAttribute(Qt::WA_TranslucentBackground);
    此时可以将窗体背景设置为透明,而要使QWS背景透明,则需添加如下代码:
    1、添加头文件#include
    2、在上面的构造函数中添加:QWSServer::setBackground(QColor(0,0,0,0));
    至此,就可以达到目标功能需求了,上面的代码是在QT4.5环境下的,而使用到QWS时,只能在qvfb或嵌入式平台上运行才可以使用,而且 使用到的framebuffer要设置为ARGB8888,而不是ARGB1555,这样才能使功能生效,我们QT编译使用的是32位的 framebuffer,故使用ARGB8888。
    参考网址:http://mypyg.blog.51cto.com/820446/172661
              http://blog.csdn.net/fh400/archive/2010/05/17/5600458.aspx
              http://blog.csdn.net/goodlixueyong/archive/2010/10/18/5948486.aspx
              http://blog.csdn.net/lbsljn/archive/2009/12/29/5099590.aspx
阅读(5599) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~