Seite 1 von 1

Vorder- und Hintergund von QTextEdit bzw. QTextCharFormat

Verfasst: 30. September 2012 15:49
von hakaishi
Hallo liebes Forum,

bei einem TextEdit, wo ich den Vorder- und Hintergrund ändern möchte, ist mir etwas seltsames aufgefallen.
textEdit->textColor() bzw. (aus QTextCharFormat) format.foreground().color() sind zu beginn immer schwarz.
textEdit->textBackgroundColor() bzw. (auch aus QTextCharFormat) format.background().color() sind zu beginn auch immer schwarz.

Obwohl der Text im TextEdit schwarz und der Hintergrund weiß ist, sind die Rückgabewerte der oben genannten Funktionen immer schwarz.
Gibt es irgend einen Standard-Wert, wo der Hintergrund gesetzt ist, den ich abfragen könnte?

Viele Grüße, Hakaishi

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Verfasst: 30. September 2012 15:56
von franzf
Wirklich schwarz, oder Qt::transparent (aka. QColor(0,0,0,0))?

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Verfasst: 30. September 2012 16:11
von hakaishi
qDebug gibt mir folgendes aus: QColor(ARGB 1, 0, 0, 0) QColor(ARGB 1, 0, 0, 0)
Das erstere ist vom TextEdit und das zweite vom TextCharFormat

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Verfasst: 30. September 2012 21:18
von franzf
Jetzt glaub ich weiß ich endlich was du machst und was du vorhast...
1) Ist dein TextFormat Invalid (Kein Text im TextEdit), gibts wohl nen QBrush(Qt::NoBrush) zurück, der ist scharz.
2) Du willst wahrscheinlich einfach nur die Hintergrundfarbe, oder? ->

Code: Alles auswählen

QBrush bg = palette().brush(QPalette::Base);

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Verfasst: 30. September 2012 23:12
von hakaishi
franzf hat geschrieben:Jetzt glaub ich weiß ich endlich was du machst und was du vorhast...
1) Ist dein TextFormat Invalid (Kein Text im TextEdit), gibts wohl nen QBrush(Qt::NoBrush) zurück, der ist scharz.
2) Du willst wahrscheinlich einfach nur die Hintergrundfarbe, oder? ->

Code: Alles auswählen

QBrush bg = palette().brush(QPalette::Base);
Ich möchte den Text markieren, also nur den Hintergund vom Text. Im TextEdit ist Text, den ich "markieren" möchte. Wenn ich die Hintergrundfarbe nicht mit setBackground() gesetzt habe (QTextCharFormat), dann ist er immer schwarz. Da dies aber nicht der Fall ist und das für einen Anwender irrierend sein könnte, möchte ich das ändern. Aber einfach auf weiß setzen ist halt auch keine Lösung, da jedes Betriebssystem ja anders ist und der Texthintergrund nicht unbedingt weiß.

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Verfasst: 3. Oktober 2012 12:18
von hakaishi
Wäre dieses Work-around so ok? (format ist QTextCharFormat)

Code: Alles auswählen

     QPixmap textPix(16,16);
     if(format.foreground().style() == Qt::NoBrush)
       textPix.fill(textEdit_->palette().windowText().color());
     else
       textPix.fill(format.foreground().color());
     QPixmap backgroundPix(16,16);
     if(format.background().style() == Qt::NoBrush)
       backgroundPix.fill(textEdit_->palette().base().color());
     else
       backgroundPix.fill(format.background().color());