Search code examples
qttransparencyqpixmap

Make a pixmap transparent for a QLabel


I have a MainWindow with a QLabel and a pixmap. I want to make it transparent (or less opaque)

I am using the following code below.

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

However it does not seem to work. The image looks the same without any changes. I also tried to use to the following statement:

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

Unfortunately, this does not seem to work either.

Anyone knows how can I make an image transparent or make it less opaque?

Thank you for your time.


Solution

  • If your image isn't transparent as it is and you want it to be, you can do something like this:

    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));