• 10065阅读
  • 5回复

QWidget窗口透明度设置失败,ubantu系统下 [复制链接]

上一主题 下一主题
离线peterapple
 

只看楼主 倒序阅读 楼主  发表于: 2011-02-11
网上提供的3种设置QWidget窗口透明的方法,我在xp下试验成功,一直到uabntu10.4以后窗口不是透明的是黑色,是能给解释一下为什么!!!
网上提供的三种方法如下
1.窗口整体透明,但是窗体上的控件不透明。
通过设置窗体的背景色来实现,将背景色设置为全透。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);


试验效果
窗体标题不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;
窗体客户区完全透明。

另外从网上看到的方法:
setAttribute(Qt::WA_TranslucentBackground, true);


试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。

2.窗口及其上面的控件都半透明:
setWindowOpacity(0.7)

试验效果:窗口及控件都半透明。

3.窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
void TestWindow::paintEvent( QPaintEvent* )
{
QPainter p(this);
p.setCompositionMode( QPainter::CompositionMode_Clear );
p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
}


试验效果:绘制区域

离线roywillow

只看该作者 1楼 发表于: 2011-02-15
请问您用的是那种方法?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线vip24688
只看该作者 2楼 发表于: 2011-02-23
ubantu是什么?
离线wangweiqi23
只看该作者 3楼 发表于: 2011-07-21
我 用的  ubuntu 10.10 +qt4.7
setAttribute(Qt::WA_TranslucentBackground, true); 结果成黑色
求大侠解释下 小弟先谢过了
离线haipe

只看该作者 4楼 发表于: 2012-02-28
xp下没一种 过了的
离线robertkun

只看该作者 5楼 发表于: 2012-02-28
试这个了吗????
QWidget::setWindowFlags(Qt::FramelessWindowHint);
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个