【问题标题】:Make a pixmap transparent for a QLabel使像素图对 QLabel 透明
【发布时间】:2026-02-11 03:05:01
【问题描述】:

我有一个带有 QLabel 和像素图的 MainWindow。我想让它透明(或不透明)

我正在使用下面的代码。

ui->label->setAttribute(Qt::WA_TranslucentBackground);
ui->label->repaint();

但它似乎不起作用。图像看起来没有任何变化。我也尝试使用以下语句:

    ui->label->setStyleSheet("background-color: rgba(255, 255, 255, 10);");

不幸的是,这似乎也不起作用。

任何人都知道如何使图像透明或不透明?

感谢您的宝贵时间。

【问题讨论】:

  • 你确定你的图片是透明的吗?你试过background-color: transparent;吗?
  • 你能提供一个简单的程序来重现你的问题吗?因为带有图像的标签在我的测试应用中是透明的。
  • @DmitrySazonov 我想他想调整图像的透明度,而不是QLabel 本身。
  • @thuga 那么他应该使用QGraphicsOpacityEffect

标签: qt transparency qpixmap


【解决方案1】:

如果您的图像不是透明的并且您希望它是透明的,您可以执行以下操作:

QLabel *l = new QLabel(this);
QImage image(":/img/myimage.png");
QPainter p;
p.begin(&image);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(image.rect(), QColor(0, 0, 0, 50));
p.end();
l->setPixmap(QPixmap::fromImage(image));

【讨论】:

    【解决方案2】:

    您可以将QGraphicsOpacityEffect 应用于标签以调整其不透明度。

    【讨论】: