Seite 1 von 1

vertikale Anpasuung der Schrift im QTextEdit

Verfasst: 17. Februar 2011 14:06
von StefanQtNutzer
Um die Schrift in einem QTextEdit immer vertikalanpassen zu können möchte ich das QTextDocument aus dem QTextEdit variieren.
textEdit_1 deklariere ich als Zeiger und initialiesiere Ihn im Constructor der aufrufenden Klasse.

int val = 15;
QTextDocument *tmpDocument1 = new QTextDocument;
tmpDocument1 = textEdit_1->document();

QTextFrame *tmpRootFormat1 = new QTextFrame(tmpDocument1);
tmpRootFormat1 = tmpDocument1->rootFrame();

QTextFrameFormat tmpTextFormat1 = tmpRootFormat1->frameFormat();
tmpTextFormat1.setTopMargin(val);
tmpRootFormat1->setFrameFormat(tmpTextFormat1);

Leider funktioniert dies nur im Constructor der beinhaltenden Klasse.
Bei Aufruf des Blockes in einer Funktion z.B. wenn val durch eine SpinBox gesetzt wird, bleicbt das QTextEdit Fenster unverändert.

Verfasst: 17. Februar 2011 20:50
von padreigh
QTextEdit Schrift Vertikal Anpassen ... das ist bei mir angekommen. WAS willst du machen?

Verfasst: 18. Februar 2011 13:13
von StefanQtNutzer
Ich will das QTextEdit als Eingabe Fenster benutzen bei konstanter erscheinung. die Höhe und Breite soll konstant bleiben. Auch die background-color.

Der eingegebne Text soll immer in x- und y- Richtung zentralisiert sein.
In x-Richtung geht dies problemlos durch das setzen von dem Alignment:

QTextDocument *tmpDocument = new QTextDocument;
QTextOption tmpOptions ;

tmpDocument = textEdit_1->document();
tmpOptions = tmpDocument->defaultTextOption();
tmpOptions.setAlignment( Qt::AlignHCenter);
tmpDocument->setDefaultTextOption(tmpOptions);

Die Anpassung in y-Richutng stellt sich dar schwieriger dar. Da ich keine automatische Anpssung gefunden habe sollte die Anpassung manuell erfolgen. Dafür wollte ich das im QTextEdit befindliche QTextFrame vom QTextDocument benutzen. Denn den RootFrame kann man in der Höhe vestellen, in dem die TopMargin() geändert wird.

Verfasst: 18. Februar 2011 13:33
von franzf
Ich weiß zwar nicht für was dieses Vertikale Zentrieren sinnvoll sein soll (aus Usersicht empfände ich das grausam, vor allem wenn nach jedem Input automatisch zentriert wird, und ich eigentlich den Output lesen will...).
Aber ein Lösungsansatz wäre, die ScrollBar des TextEdits per Code in die Mitte zu scrollen.

Verfasst: 18. Februar 2011 13:42
von StefanQtNutzer
Das Feld dient zur Gestaltung des Feldes, das vom QTextEdit eingenomme n wird. Der User soll dem ganzel noch eine Beschriftung geben. Toll wäre es dann wenn die Schrift geleich zentriert ist. So das der User nichts machen muss...

Der Benutzer soll sozusagen einen Button mit Text gestalten. Wobei in Schriftgröße und Anzahl der zu beschriftenden Zeilen vom Benutzer Abhängt.

Die Idee mit der Scrolbar ist eine gute Idee, der ich mal nachgehen werde.

Verfasst: 21. Februar 2011 18:08
von StefanQtNutzer
Wie bekomme ich nun die erste Zeile in die Mitte gegescrollt, wenn ich mehrere Zeilen Platz habe?