Qt中设置透明度

Qt中设置窗体透明度的方式有三种:

  • QWidget::setWindowOpacity
  • QPainter::setOpacity
  • QGraphicsOpacityEffect

1、QWidget::setWindowOpacity

windowOpacityQWidget的属性,我们可以通过此接口对QWidget一族设置不透明度,不过若Widget有父指针,则利用此接口设置会失败。此时可用以下两种方式替换。

2、QPainter::setOpacity

利用QPainter设置是最原始有效的方式,当我们在paintEvent中绘制时,可以利用QPainter设置透明度。

1
2
3
4
5
6
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setOpacity(0.6);
painter.drawPixmap(pos(), pix.scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
}

3、QGraphicsOpacityEffect

1
2
3
QGraphicsOpacityEffect *effect = newQGraphicsOpacityEffect(this);
effect->setOpacity(0.5);
widget->setGraphicsEffect(effect);