Seite 1 von 1

Hintergrund- und Textfabe in einem lineEdit ändern?

Verfasst: 20. März 2015 20:02
von BenOtt
Hallo,
ich möchte in einem lineEdit in Abhängigkeit vom Ihnalt die Text- und Hintergrundfarbe ändern.
In dieser Form geht es,

Code: Alles auswählen

ui->lineEdit->setStyleSheet("Color: red; background-color: blue)");
dies hat jedoch den Nachteil, dass ich bei einer Farbänderung den ganzen Code durchgehen müßte und dies bei jedem lineEdit ändern müßt.
Deshalb suche ich eine Möglichkeit um es an einer einzigen Stelle ändern zu können.
Probiert habe ich es schon in dieser Form, die mir auch gefallen würde, aber leider funktioniert es so nicht.

Code: Alles auswählen

QPalette palBackground;
palBackground.setColor(QPalette::Base, QColor(45, 45, 255));

QPalette palSchrift;
palSchrift.setColor(QPalette::Text, QColor(255, 0, 0));

ui->lineEdit->setPalette(palSchrift)
ui->lineEdit->setPalette(palBackground);
Wenn ich es so mache, dann wird leider nur der Hintergrund geändert und die Schrift wird mit der Standardfabe ausgegeben.

Kann mir jemand einen Tipp geben?

Re: Hintergrund- und Textfabe in einem lineEdit ändern?

Verfasst: 21. März 2015 08:59
von Christian81
Du setzt eine Palette mit einer geänderten QPalette::Text. Danach setzt Du ein neues QPalette-Objekt mit geänderter Hintergrundfarbe ... wieso sollte sich danach also die Textfarbe ändern?

Re: Hintergrund- und Textfabe in einem lineEdit ändern?

Verfasst: 21. März 2015 13:54
von BenOtt
wieso sollte sich danach also die Textfarbe ändern?
Erklären kann ich es nicht, allerdings sehe ich das Ergebnis.
Es wird immer das zuletzt gesetzte QPalette-Objekt genommen. Entweder wird die Hintergrundfarbe oder die Textfarbe geändert leider nicht beides.
Gibt es eine Möglichkeit mit Hilfe eines QPalette-Objektes beide Farbwerte gleichzeitig zu ändern?

Re: Hintergrund- und Textfabe in einem lineEdit ändern?

Verfasst: 21. März 2015 14:00
von Christian81
Was hindert Dich daran, beide Werte im QPalette-Objekt zu ändern und dieses an das QLineEdit zu geben? Ist ja genauso als würde man zweimal mit setText() einen Text im LineEdit setzen und sich wundern dass nur der zuletzt gesetzte Text dargestellt wird.
Abgesehen davon würde ich die aktuelle Palette mittels QLineEdit::palette() holen und nicht eine per Default erzeugt QPalette. Sollte zwar in den meisten Fällen das Gleiche sein aber sauberer ist es so.

[gelöst]Re: Hintergrund- und Textfabe in einem lineEdit ände

Verfasst: 21. März 2015 18:37
von BenOtt
Christian81 hat geschrieben:Was hindert Dich daran, beide Werte im QPalette-Objekt zu ändern und dieses an das QLineEdit zu geben? Ist ja genauso als würde man zweimal mit setText() einen Text im LineEdit setzen und sich wundern dass nur der zuletzt gesetzte Text dargestellt wird.
Danke für diesen Tip.
Nichts hindert mich daran. Allerdings habe ich nicht daran gedacht und deshalb auch nicht die Werte im QPalette-Objekt überschrieben. Nach dieser kleinen Änderung funktioniert es so wie ich es mir vorgestellt habe. Damit ist es auch ohne großen Aufwand zu ändern.