为QLabel创建透明的Pixmap

5

我有一个包含QLabel和pixmap的MainWindow。我想让它透明(或不那么不透明)。

我正在使用下面的代码:

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

然而,它似乎没有起作用。图像看起来没有任何变化。我还尝试使用以下语句:
    ui->label->setStyleSheet("background-color: rgba(255, 255, 255, 10);");

很不幸,这似乎也不起作用。

有人知道如何使图像透明或使其不那么不透明吗?

感谢您的时间。


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

7
如果你的图片不是透明的,但你希望它变得透明,你可以像下面这样操作:
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

您可以使用方法fill,例如:

pixmap = QPixmap(width_size_in_pixels, height_size_in_pixels)
pixmap.fill(Qt.transparent)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接