透明的QLabel

12
#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();
}

这会输出一个带有背景的标签"hello"。我正在使用Qt4。我想要使这个标签的背景完全透明,但是setWindowOpacity会改变整个小部件的透明度。我想保留标签内容,只将背景变为透明。


2
这里有一篇名为“Qt 4.1中的透明背景”的文章:http://doc.qt.nokia.com/qq/qq16-background.html。这对你有用吗? - aldo
@aldo - 诺基亚的文档现在已经从网上消失了。 - Eliyahu Skoczylas
5个回答

28

我发现这个更简单...

QWidget::setAttribute(Qt::WA_TranslucentBackground);

16

您可以使用样式表来设置背景的颜色和透明度:

setStyleSheet("background-color: rgba(0,0,0,0%)");

5
在PyQt中:
``` lbl.setAttribute(Qt.WA_TranslucentBackground, True) ```
该代码将设置`lbl`标签的属性为`Qt.WA_TranslucentBackground`,同时将其值设为True。

3
在我的情况下,对于Qt5,以下操作有效:
movieLabel->setAutoFillBackground(false);

已经使用Qt 5.11.1和Qt 5.8.0进行测试。


3
如果您用alpha为0来定义QColor,那么您将得到一个透明的背景颜色,例如:
QColor bg_color(255, 0, 0, 0);
QPalette p(l.palette());
p.setColor(QPalette::BackgroundColor, bg_color);
l.setPalette(p);

应该将标签的背景颜色设置为透明。

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