Ausrichtung von Text in QTextTable

Alles rund um die Programmierung mit Qt
Antworten
henninghu
Beiträge: 2
Registriert: 16. Mai 2009 15:06

Ausrichtung von Text in QTextTable

Beitrag 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
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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.
henninghu
Beiträge: 2
Registriert: 16. Mai 2009 15:06

Beitrag 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.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

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