Seite 1 von 1

Tabulatorweite setzen

Verfasst: 3. Juni 2008 17:23
von s-valve
Hallo,

ich habe ein kleines Problemechen bei meinem Projekt.
Es geht um die Tabulatorweite, welche ich einstellbar für ein QTextEdit sein soll.
Das funktioniert auch ganz gut mit folgenden zeilen:

Code: Alles auswählen

TextEdit1->setTabStopWidth(tabStopWidth);
Momentan berechne ich den Wert "tabStopWidth" mit x*6+1, was nur teilweise korrekte Ergebnisse liefert. (Die Formel hieß mal x*6.26 unter Borland C++ und hatte dort zufriedenstellender funktioniert).

Probleme habe ich insbesondere dann, wenn ich Dateien einlesen die mein Programm nicht erzeugt hat. Die Anzahl der Tabulatoren kann gleich sein, aber die Weite stimmt teilweise überhaupt nicht.

Kann mir jemand vlt. auf die Sprünge helfen bei dem Thema?

Gruß,
M

Verfasst: 3. Juni 2008 22:51
von dontinelli
was genau ist nicht korrekt?

Verfasst: 4. Juni 2008 07:44
von s-valve
Hallo,

nun, die Weite scheint einfach nicht zu stimmen. Mal passt es an einer Stelle und dann sind die Tabulatoren wieder stark verschoben (vlt. so 2-8 Leerzeichen).

Ich glaube aber eine Lösung gefunden zu haben. Zumindes sind damit die Probleme behoben:

Code: Alles auswählen

QFontMetrics fm(font);
tabStopWidth = Pref_spinBox_TabWidth->value()*fm.width(" ");
TextEdit1->setTabStopWidth(tabStopWidth);   
Habe einfach noch mal in der Qt Doku gelesen und es mal mit der Breite eines Leerzeichens der gegebenen Schriftart versucht.

Gruß,
M

Verfasst: 4. Juni 2008 07:48
von upsala
Du willst doch nicht etwa behaupten, daß du den Unterschied zwischen proportionalen und nicht-proportionalen Font nicht kennst?

Verfasst: 4. Juni 2008 08:19
von s-valve
Doch klar, aber die Dateien werden eigentlich nur mit CourierNew erstellt...

Verfasst: 4. Juni 2008 08:35
von upsala
Was hat die erstellung mit der Darstellung zu tun?

Verfasst: 4. Juni 2008 09:12
von s-valve
Die Darstellung erfolgt im QTextEdit üblicherweise auch mit der Schriftart CourierNew. Aber da die Schriftart einstellbar ist, ist die lösung mit der Länge des Leerzeichens wohl angebrachter.

Gruß