1、主要思路先实现窗体的整体透明,再使用 QPainter::CompositionMode_Clear属性实现窗体的局部透明。
2、
this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
this->installEventFilter(this);
void paintEvent(QPaintEvent *e)
{
QPainter painter(this);
rect1 = QRect(borderWidth, TopWidget->height(), width - (borderWidth * 2), height);
//绘制透明层
painter.drawRoundedRect(this->rect(), 5, 5);
//设置rec1局部区域透明
painter.setCompositionMode(QPainter::CompositionMode_Clear);
painter.fillRect(rect1, Qt::SolidPattern);
}