Hintergrund- und Textfabe in einem lineEdit ändern?

Alles rund um die Programmierung mit Qt
Antworten
BenOtt
Beiträge: 13
Registriert: 3. März 2015 13:58

Hintergrund- und Textfabe in einem lineEdit ändern?

Beitrag 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?
MfG
Ben
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

Beitrag 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?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
BenOtt
Beiträge: 13
Registriert: 3. März 2015 13:58

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

Beitrag 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?
MfG
Ben
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
BenOtt
Beiträge: 13
Registriert: 3. März 2015 13:58

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

Beitrag 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.
MfG
Ben
Antworten