Vorder- und Hintergund von QTextEdit bzw. QTextCharFormat

Alles rund um die Programmierung mit Qt
Antworten
hakaishi
Beiträge: 62
Registriert: 8. Dezember 2009 18:25

Vorder- und Hintergund von QTextEdit bzw. QTextCharFormat

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Beitrag von franzf »

Wirklich schwarz, oder Qt::transparent (aka. QColor(0,0,0,0))?
hakaishi
Beiträge: 62
Registriert: 8. Dezember 2009 18:25

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Beitrag 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);
hakaishi
Beiträge: 62
Registriert: 8. Dezember 2009 18:25

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Beitrag 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ß.
hakaishi
Beiträge: 62
Registriert: 8. Dezember 2009 18:25

Re: Vorder- und Hintergund von QTextEdit bzw. QTextCharForma

Beitrag 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());
Antworten