• 5527阅读
  • 6回复

急!求!qt 设置子控件为半透明问题 [复制链接]

上一主题 下一主题
离线wwdsadan
 
只看楼主 正序阅读 楼主  发表于: 2011-07-20
窗口是一个widget,在这个widget里面有一个属于它自己的子widget,也就是说子widget是主widget的一个数据成员,然后我在主widget的构造函数里初始化 childWidget=new ChildWidget(this);

请教一下:
如何设置该子widget为半透明

网上找的方法是:调用setWindowOpacity(0.5)
该方法经测试有如下问题
如果我在父widget的构造函数里调用这个函数,没错,是可以实现半透明,但是那个是把父widget和子widget都设成半透明了,这个跟初衷不同
如果我在子widget的构造函数里调用这个函数,不管父widget还是子widget都没有任何反应


---------------------------------求各位达人大神解救一下,感激不尽!!
离线yiyaaixuexi

只看该作者 6楼 发表于: 2011-07-25
呵呵有意思
离线jdwx

只看该作者 5楼 发表于: 2011-07-25
回 4楼(wwdsadan) 的帖子
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wwdsadan
只看该作者 4楼 发表于: 2011-07-20
问题解决了。。。。

在子widget的构造函数里添加如下几句:
QPalette myPalette;
QColor myColor(0,0,0);
myColor.setAlphaF(0.2);
myPalette.setBrush(backgroundRole(),myColor);
this->setPalette(myPalette);
this->setAutoFillBackground(true);

原理是:改子widget的背景色+修改alpha值(设置半透明)

改子widget的背景色 :
QPalette myPalette;
QColor myColor(0,0,0);
myPalette.setBrush(backgroundRole(),myColor);
this->setPalette(myPalette);
this->setAutoFillBackground(true);//这句很关键,缺少的话,背景色修改不成功

修改alpha值:
myColor.setAlphaF(0.2);//通过设置alpha值来改变透明度
泥马,设置半透明就只需这么简单的一条语句,叫爹爹不理,叫娘娘不爱的,有意思么
感谢看帖的各位兄弟姐妹,谢谢你们捧了个人场

离线wwdsadan
只看该作者 3楼 发表于: 2011-07-20
不会是大家都没遇到过这样的问题吧?还是这个问题太简单了?!!
不管怎样,希望各位能给个答复呀,小弟真心很急解决这个问题
每次频繁刷帖然后又没有回复是一件很痛苦的经历。。。。
离线wwdsadan
只看该作者 2楼 发表于: 2011-07-20
离线wwdsadan
只看该作者 1楼 发表于: 2011-07-20
求,各种求,缺,什么都缺,自己顶一下!
快速回复
限100 字节
 
上一个 下一个