qt 设置窗口半透明

来源:互联网 发布:mac恢复系统 编辑:程序博客网 时间:2024/06/02 20:21

1. 在构造函数中:

setWindowFlags(Qt::FramelessWindowHint);

setAttribute(Qt::WA_TranslucentBackground);

 

2. 在paintEvent()中:

QPixmap pixmapTop("xxx.xxx");    //xxx是背景图片(可以是圆角的)

pixmapTop.setMask(pixmapTop.createHeuristicMask());   //将pixmap空白部分删去

 

int alpha = 160;     //整个窗体的透明度

 

QPainter p(this);

p.drawPixmap(0, 0, pixmapTop);

p.setCompositionMode(QPainter::CompositionMode_DestinationIn);  //设置图片的混合模式,具体参数选择可以参照//qtdemo中的painting

p.fillRect(0, 0, width(), height(), QColor(0, 0, 0, alpha));