QWidget透明度

来源:互联网 发布:c 动态创建数组 编辑:程序博客网 时间:2024/06/08 08:42

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

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

 

原创粉丝点击