2012-03-31 9 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(); 
} 

Bu, arka plana sahip bir "merhaba" etiketi çıkarır. Qt4 kullanıyorum. Bu etiketin arka planını tamamen şeffaf yapmak istiyorum. Ancak setWindowOpacity tüm widget şeffaflığını değiştirir. İçeriği olduğu gibi istiyorum, ama sadece şeffaf olmak için arka plan. Eğer 0 ait alfa ile bir QColor tanımlarsanızTranspaprent QLabel

+2

Burada "Qt 4.1 de Şeffaf Arka Planlar" başlıklı bir makale var: http://doc.qt.nokia.com/qq/qq16-background.html Bu sizin için çalışacak mı? – aldo

+0

@aldo - Nokia belgesi artık çevrimiçi değil. –

cevap

12

Ben daha basit olarak buldum ....

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

örneğin bu yüzden, şeffaf renk ile arka plan alacak: etiketin arka plan ne olursa olsun renk şeffaf hale getirmesi gerektiğini

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

. PyQt'de olarak

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

rengini ve arka plan alfa değerini ayarlamak için stil kullanabilirsiniz

lbl.setAttribute (Qt.WA_TranslucentBackground, True)