Transpaprent QLabel - PullRequest
       19

Transpaprent QLabel

9 голосов
/ 31 марта 2012
#include <QtGui>

class   Label : public QLabel
{
public:
    Label(QWidget *parent =0) :
        QLabel(parent)
    {
        resize(100, 100);
        setText("hello");
        show();
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Label l;

    return a.exec();
}

Выводит ярлык «привет» с фоном. Я использую Qt4. Я хочу сделать фон этого ярлыка полностью прозрачным. Но setWindowOpacity изменяет прозрачность всего виджета. Я хочу, чтобы контент был таким, какой он есть, но только фон должен быть прозрачным.

Ответы [ 5 ]

19 голосов
/ 06 апреля 2012

Я нашел это проще ...

QWidget::setAttribute(Qt::WA_TranslucentBackground);
10 голосов
/ 31 марта 2012

Вы можете использовать таблицы стилей, чтобы установить цвет и альфа-значение фона:

setStyleSheet("background-color: rgba(0,0,0,0%)");
1 голос
/ 17 августа 2018

В моем случае с Qt5 сработало следующее:

movieLabel->setAutoFillBackground(false);

Протестировано с Qt 5.11.1 и Qt 5.8.0.

1 голос
/ 06 сентября 2017

в PyQt:

lbl.setAttribute (Qt.WA_TranslucentBackground, True)

0 голосов
/ 31 марта 2012

Если вы определите QColor с альфа-значением 0, вы получите фон с прозрачным цветом, например:

QColor bg_color(255, 0, 0, 0);
QPalette p(l.palette());
p.setColor(QPalette::BackgroundColor, bg_color);
l.setPalette(p);

, который должен сделать фон надписи любого цвета прозрачным.

...