vertikale Anpasuung der Schrift im QTextEdit

Alles rund um die Programmierung mit Qt
Antworten
StefanQtNutzer
Beiträge: 12
Registriert: 1. Dezember 2010 11:54

vertikale Anpasuung der Schrift im QTextEdit

Beitrag 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.
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

QTextEdit Schrift Vertikal Anpassen ... das ist bei mir angekommen. WAS willst du machen?
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
StefanQtNutzer
Beiträge: 12
Registriert: 1. Dezember 2010 11:54

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

Beitrag 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.
StefanQtNutzer
Beiträge: 12
Registriert: 1. Dezember 2010 11:54

Beitrag 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.
StefanQtNutzer
Beiträge: 12
Registriert: 1. Dezember 2010 11:54

Beitrag von StefanQtNutzer »

Wie bekomme ich nun die erste Zeile in die Mitte gegescrollt, wenn ich mehrere Zeilen Platz habe?
Antworten