2012-03-31 63 views
5
#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(); 
} 

Esto emite una etiqueta 'hola' con un fondo. Estoy usando Qt4. Quiero que el fondo de esta etiqueta sea completamente transparente. Pero setWindowOpacity cambia la transparencia del widget completo. Quiero el contenido tal como es, pero solo el fondo es transparente.Transparente QLabel

+2

Hay un artículo titulado "Fondos transparentes en Qt 4.1" aquí: http://doc.qt.nokia.com/qq/qq16-background.html ¿Funcionará para usted? – aldo

+0

@aldo: el documento de Nokia ya no existe en línea. –

Respuesta

12

He encontrado esto como simple ....

QWidget::setAttribute(Qt::WA_TranslucentBackground); 
0

Si se define una QColor con alfa de 0 usted conseguirá fondo con color transparente, así por ejemplo:

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

lo que debería hacer el fondo de etiqueta de cualquier color transparente.

8

Puede utilizar hojas de estilo para definir el color y el valor alfa del fondo:

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

En PyQt:

lbl.setAttribute (Qt.WA_TranslucentBackground, True)