Seite 1 von 1

[gelöst]Textfarbe bei QLabel und QTextEdit

Verfasst: 6. Oktober 2005 15:02
von prof_maad
Hallo alle miteinander,

ich habe derzeit ein Problem beim Colorieren meiner Anwendung.

Ich habe mehrere QLabel, die in einem QGridLayout angeordnet sind.
Diesen weise ich nun eine QPalette zu, bei der die Textfarbe auf Grün gesetzt ist.

Dummerweise zeigen die QLabels keinen Text an, beziehungsweise er ist Schwarz auf Schwarz.

Das zweite Problem ist ein QTextEdit. Ich möchte erreichen, dass dessen Textfarbe ebenfalls grün ist. Wenn ich jedoch mit der entsprechenden Funktion die Farbe setzte, bleibt sie weiterhin schwarz. (QTextEdit wurde ebenfalls eine QPalette mit grüner Schriftfarbe zugeordnet)

Das mittlerweile dazugekommene dritte Problem ist die Textfarbe in einem QTextBrowser. Auch diese ist per QPalette auf Grün gesetzt, bleibt jedoch weiterhin schwarz.

Wenn jemand eine Idee hat, wie man das beheben könnte, wäre ich sehr dankbar.

Danke im Voraus und Ciao,

Prof. MAAD

Verfasst: 6. Oktober 2005 18:34
von ArneStocker
Hi ..

versuch es doch mal mit

Code: Alles auswählen

pTextEdit->setPaletteForegroundColor(QColor(0,255,0));
oder was immer Du für eine Farbe willst

Ausserdem kannst Du in QLabel und QTextEdit den Text als richttext darstellen und dann auch farblich bestimmen

Code: Alles auswählen

"Das ist ein <font color =#00ff00>grüner Text</font>"
Gruss Arne

PS.: kann ich aber nur für QT 3.x mit Sicherheit sagen

Verfasst: 6. Oktober 2005 19:06
von prof_maad
Danke erstmal für die Idee, aber diese Funktion existiert so, wenn ich das richtig sehe, in QT 4 nicht mehr.

Wenn jemand noch eine Idee hat, wäre ich sehr dankbar dafür.

Danke im Voraus und Ciao,

Prof. MAAD

Verfasst: 6. Oktober 2005 20:54
von ArneStocker
.. dann schreib sie Dir selbst

Code: Alles auswählen

void SetWidgetForegroundColor(QWidget* pWidget,const QColor &color)
{
	if (	(pWidget != NULL)	&&
			(color.isValid() == true) )
	{
		QPalette palette = pWidget->palette();
		palette.setColor(QPalette::Foreground,color);
		pWidget->setPalette(palette);
		pWidget->repaint();
	}
}
Florian hat Dir in einem parallelen Thread einen Link auf eine ähnliche Funktion (nur mit BackgroundColor) gesetzt.
Bitte die Anworten auch lesen ... :roll:

Gruss Arne

Verfasst: 6. Oktober 2005 22:47
von prof_maad
So, dass Problem ist jetzt eigenhändig gelöst.

Entscheidend war, dass alle drei Elemente nur PlainText enthielten, weßhalb QT sie auch so interpretierte. Deßhalb ignorierte er auch alle Formatangaben von Außen, auch die der QPalette.

Nach dem ich bei allen dafür gesorgt hatte, dass Qt sie als HTML interpretiert, ist die Textfarbe vollkommen richtig.

Danke trotzdem für die Hilfe,

Ciao,

Prof. MAAD