Wie stelle ich die Farbe des Textes und den Hintergrund eines ein QLabel
?
179
Der beste und empfohlene Weg ist die Verwendung von Qt Style Sheet .
Um die Textfarbe und Hintergrundfarbe von a zu ändern QLabel
, würde ich Folgendes tun:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Sie können auch die Verwendung von Qt-Stylesheets vermeiden und die QPalette
Farben Ihrer ändernQLabel
, aber Sie erhalten möglicherweise unterschiedliche Ergebnisse auf verschiedenen Plattformen und / oder Stilen.
In der Qt-Dokumentation heißt es:
Die Verwendung einer QPalette funktioniert nicht garantiert für alle Stile, da Stilautoren durch die Richtlinien der verschiedenen Plattformen und durch die native Theme Engine eingeschränkt sind.
Aber Sie könnten so etwas tun:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Aber wie gesagt, ich empfehle dringend, die Palette nicht zu verwenden und sich für Qt Style Sheet zu entscheiden.
color
Attribut ist unwirksam. Nur über HTML konnte<font color="#FFFFFF">...</font>
ich die Schriftfarbe einstellen (in diesem Fall auf Weiß.color: ;
als "Zurücksetzen" scheint dies zu tun, aber ist dies eine gute Vorgehensweise oder gibt es eine bessere Methode?Sie können QPalette verwenden, müssen
setAutoFillBackground(true);
jedoch die Hintergrundfarbe aktivierenEs funktioniert gut unter Windows und Ubuntu, ich habe mit keinem anderen Betriebssystem gespielt.
Hinweis: Weitere Informationen finden Sie im Abschnitt QPalette , Farbrolle
quelle
Ich füge diese Antwort hinzu, weil ich denke, dass sie für jeden nützlich sein könnte.
Ich gehe auf das Problem ein, RGBA- Farben ( dh RGB-Farben mit einem Alpha-Wert für Transparenz) für Farbanzeigeetiketten in meiner Malanwendung festzulegen.
Als ich auf die erste Antwort stieß, konnte ich keine RGBA-Farbe einstellen. Ich habe auch Dinge ausprobiert wie:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
Wo
color
ist eine RGBA-Farbe?Meine schmutzige Lösung bestand also darin, zu erweitern
QLabel
und zu überschreibenpaintEvent()
Methode , indem ihr Begrenzungsrecht füllte.Heute habe ich die Liste der Eigenschaften der Stilreferenzen geöffnet
qt-assistant
und gelesen . Glücklicherweise gibt es ein Beispiel, das Folgendes angibt:QLineEdit { background-color: rgb(255, 0, 0) }
Das öffnet mir den Kopf, wenn ich als Beispiel so etwas wie den folgenden Code mache:
Beachten Sie, dass das
setAutoFillBackground()
EinstellenFalse
nicht funktioniert.Grüße,
quelle
Das einzige, was für mich funktioniert hat, war HTML.
Und ich fand es viel einfacher als alle programmatischen Ansätze.
Der folgende Code ändert die Textfarbe basierend auf einem Parameter, der von einem Aufrufer übergeben wird.
quelle
<font/>
Dinge in das Tag einfügen können (und HTML-Leuten eher vertraut sind: D) und nicht nur eine Farbe, wodurch Sie mehr Flexibilität erhalten.Der beste Weg, um eine Funktion in Bezug auf die Farben eines Widgets festzulegen, ist die Verwendung festzulegen, QPalette .
Der einfachste Weg, das Gesuchte zu finden, besteht darin, Qt Designer zu öffnen, die Palette eines QLabels festzulegen und den generierten Code zu überprüfen.
quelle
Dieser funktioniert perfekt
getColor()
Methode gibt die ausgewählte Farbe zurück. Sie können die Etikettenfarbe mit ändernstylesheet
quelle