QWidget实现透明的方式
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
重写QWidget的paintEvent(QPaintEvent * event)函数:
void TransparentWidget::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
QPen pen;
pen.setColor(QColor(0, 0, 0, 1));
painter.setPen(pen);
painter.setBrush(QBrush(QColor(0, 0, 0, 1)));
painter.drawRect(rect);
return QWidget::paintEvent(event);
}
特别注意:
不能把QWidget设置为最大化,也就是不能调用showMinimized()这个函数,它调用后窗口永远设置不了透明。