QWidget透明度

今天想把窗口变成半透明,查了好久中午找到这个方法

setWindowOpacity(0.5);

但是当QWidget 调用  setAutoFillBackground(true); 

方法之后窗口就不能透明,

QWidget * widget1 = new QWidget(&widget);

        widget1->setAutoFillBackground(true);
        QPalette palette = widget1->palette();

        palette.setColor(QPalette::Background, QColor(Qt::red));
        widget1->setPalette(palette);
        widget1->setWindowOpacity(0.5);


用上述代码试过之后发现只要调用 setAutoFillBackground(true) 这是调色板之后便不能透明,现在还不知道原因先记录下来

 

2 另一种方法

widget1->setAttribute(Qt::WA_TranslucentBackground, true);

没有实践效果

 

3利用调色板让窗口半透明

	widget1->setAutoFillBackground(true);
        QPalette palette = widget1->palette();
        palette.setColor(QPalette::Background, QColor(100,100,100,50));
        widget1->setPalette(palette);

这样widget1就可以实现半透明,另外记载以下  全透明的color  : QColor(0x00,0xff,0xff,0x00));

3 窗体不透明,布局透明 在Paint事件中使用Clear模式绘图(这个我没有试过,是在网上搜来的)

void TestWindow::paintEvent( QPaintEvent* ) 
 { 
                 QPainter p(this); 
                 p.setCompositionMode( QPainter::CompositionMode_Clear ); 
                 p.fillRect( 10, 10, 300, 300, Qt::SolidPattern ); 
 } 


本文部参考:http://blog.csdn.net/liang890319/article/details/7028520

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值