急!求!qt 设置子控件为半透明和背景色问题

wwDSadan 2011-07-20 11:19:46
主窗口是一个widget,在这个widget里面有一个属于它自己的子widget,也就是说子widget是主widget的一个数据成员,然后我在主widget的构造函数里初始化 childWidget=new ChildWidget(this);

请教一下
1. 如何设置该子widget为半透明
2. 如何设置该子widget的背景色
在该子widget的构造函数里搞了如下几句,貌似该子widget的背景色没有改变,揪心
QPalette myPalette;
myPalette.setColor(QPalette::Background,QColor(0,0,0));
this->setPalette(myPalette);

求各位大神解救,小弟感激不尽!
...全文
1603 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liu-Eleven 2013-10-31
  • 打赏
  • 举报
回复
引用 4 楼 wwDSadan 的回复:
子widget修改背景色方法: 在子widget构造函数里加入如下几句: this->setAutoFillBackground(true);//这个语句很重要,没有的话,子widget背景色修改不成功 QPalette myPalette; myPalette.setBrush(backgroundRole(),QColor(10,25,69)); this->setPalette(myPalette); 至于让这个子widget半透明的问题 网上找的方法是:调用setWindowOpacity(0.5) 该方法经测试有如下问题: 如果我在父widget的构造函数里调用这个函数,没错,是可以实现半透明,但是那个是把父widget和子widget都设成半透明了,这个跟初衷不同 如果我在子widget的构造函数里调用这个函数,不管父widget还是子widget都没有任何反应 -----------------求达人提供解决问题的方案,感激不尽!
我也在找如何解决这个问题......
  • 打赏
  • 举报
回复
最简单的方法就是用setStyleSheet函数
wwDSadan 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yiyaaixuexi 的回复:]

this->setWindowOpacity(0.5);
[/Quote]

能不能具体点,我也用了这玩意搞了,好像不行,是不是我位置用错了,还有就是关于改变子widget的背景色问题,能解答下么,谢谢!
念茜 2011-07-20
  • 打赏
  • 举报
回复
this->setWindowOpacity(0.5);
wwDSadan 2011-07-20
  • 打赏
  • 举报
回复
求,各种求,缺,什么都缺,自己先顶一下
wwDSadan 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 2011-07-20
  • 打赏
  • 举报
回复
子widget修改背景色方法:
在子widget构造函数里加入如下几句:
this->setAutoFillBackground(true);//这个语句很重要,没有的话,子widget背景色修改不成功
QPalette myPalette;
myPalette.setBrush(backgroundRole(),QColor(10,25,69));
this->setPalette(myPalette);

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


-----------------求达人提供解决问题的方案,感激不尽!

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧