Seite 1 von 1

Ausrichtung von Text in QTextTable

Verfasst: 27. Mai 2009 08:45
von henninghu
Hallo,

kann mir jemand sagen, wie man in einer Tabelle in einem QTextDocument in einer Zelle die Ausrichtung des Textes ändern kann?

Ich möchte, dass der Text in einer einzelnen Spalte zentriert ist, finde aber keine geeignete Methode dazu. Wenn ich die Ausrichtung im Block-Format ändere, passiert leider auch nichts:

Code: Alles auswählen

table->cellAt(0,0).firstCursorPosition().blockFormat().setAlignment(Qt::AlignHCenter);
Weiss jemand eine Lösung für mein Problem?


Henning

Verfasst: 27. Mai 2009 09:51
von pfid
Habe in meinem Programm ein verbessertes TextEdit Widget, was u. A. mit Tabellen umgehen kann. Um Texte in den einzelnen Zellen auszurichten verwende ich den gleichen Code wie für den Fließtext:

Code: Alles auswählen

void QTextEdit::setAlignment ( Qt::Alignment a )
Versuch das mal. Sollte funktionieren so lange dein Cursor in der Zelle steht.

Verfasst: 27. Mai 2009 10:50
von henninghu
Danke für die schnelle Antwort!

Werde es mal ausprobieren.

Hier habe ich gerade auch noch eine andere Lösung gefunden, die funktioniert:

Code: Alles auswählen

QTextBlockFormat rightAlignment;
rightAlignment.setAlignment(Qt::AlignRight);
 
QTextTable * testTable  = cursor.insertTable(4,4);
testTable->cellAt(0,0).firstCursorPosition().setBlockFormat(rightAlignment);
testTable->cellAt(0,0).lastCursorPosition().insertText("test");
// etc.

Verfasst: 27. Mai 2009 10:57
von pfid
qtextedit.cpp:736

Code: Alles auswählen

void QTextEdit::setAlignment(Qt::Alignment a)
{
    Q_D(QTextEdit);
    QTextBlockFormat fmt;
    fmt.setAlignment(a);
    QTextCursor cursor = d->control->textCursor();
    cursor.mergeBlockFormat(fmt);
    d->control->setTextCursor(cursor);
}