Seite 1 von 1

[gelöst] QLabel Hintergrundfarbe ändern

Verfasst: 21. November 2006 10:38
von tscher
Hallo liebe Qt Experten,

mein Problem ist eigentlich sehr einfach: Ich hab ein QLabel mit einem Text drauf und würde gerne die Hintergrundfarbe des Labels verändern (als "Anzeigelämpchen" für verschiedene Ereignisse). Ich mache also beispielsweise folgendes:

Code: Alles auswählen

QLabel* la = new QLabel(this);
la->resize(200,50);
la->move(100,100);
la->setText("Hello World");
la->setAlignment(Qt::AlignCenter);

QPalette p = la->palette();
p.setColor(QPalette::Window,Qt::green);
la->setPalette(p);
und hoffe das ich ein Label mit grünem Hintergrund bekomme. Leider hoffe ich vergeblich... der Hintergrund bleibt normal grau. Ich hab schon verschiedene QColorRoles ausprobiert (QPalette::Window, QPalette::Base, etc. etc.); ich kann auch z.B. mit QPalette::WindowText die Textfarbe ändern, nur eben die Hintergrundfarbe nicht.

Daher meine Frage: was mach ich hier falsch ? Hab ich eine falsche ColorRole, oder hab ich sonstwas übersehen ?

Vielen Dank im Voraus für Eure Hilfe !
lG,
tscher

Verfasst: 21. November 2006 10:54
von defenderLQ
ich würde es mit stylsheet machen .

also in einer .qss oder im .ui es definieren:

bei mir klappt beide methoden.

beim .ui in stylesheet würde ich das probieren:

Code: Alles auswählen

QLabel {
    background-color: rgb(192,192,192);

}
oder

Code: Alles auswählen

QLabel {
    background-color: beige;

}
oder

Code: Alles auswählen

QLabel {
    background-color: #d0d67c;

}
also in .qss und in der .ui klappt es so ziemlich gut bei mir aber
ich habe bis jetzt nicht im code die farben oder hintergründe angegeben.

ich kann mal nachschauen wie es noch anders auch noch geht....

Verfasst: 21. November 2006 10:58
von Burgpflanze
Voher noch

Code: Alles auswählen

la->setAutoFillBackground( true );
setzen.
Siehe Qt-Dokumentation QWidget::autoFillBackground().

Danke jetzt klappts :-)

Verfasst: 21. November 2006 17:17
von tscher
Moin,

vielen Dank an Burgpflanze - mit setAutoFillBackground(true) funktionierts !

DefenderLQ: Danke für den Hinweis, aber im Stylesheet definieren hilft mir nicht weil das Label ja (je nachdem was in der Applikation passiert) dynamisch die Farbe wechseln soll.

Danke nochmal & liebe Grüße,
tscher