QTextEdit, bestimmte Zeile (QTextBlock) zentrieren.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Hallo,

ich habe ein QTextEdit. Im dazugehörigen QTextDocument liegt der Text Zeile für Zeile in je einem QTextBlock vor.

Gegeben eine bestimmte Zeilennummer möchte ich diese Zeile mittig im QTextEdit darstellen. Also entsprechend scrollen. Wie mache ich das am geschicktesten?

Gruß
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

Panke hat geschrieben:Hallo,

ich habe ein QTextEdit. Im dazugehörigen QTextDocument liegt der Text Zeile für Zeile in je einem QTextBlock vor.

Gegeben eine bestimmte Zeilennummer möchte ich diese Zeile mittig im QTextEdit darstellen. Also entsprechend scrollen. Wie mache ich das am geschicktesten?

Gruß
falls ich dich richtig verstanden habe: den Text "mittig" darstellen kannst du, indem du QTextEdit.setAlignment mit dem entsprechenden Parameter aufrufst, Zeilen umbrechen geht mit QTextEdit.setLineWrapMode .
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Das meine ich leider nicht. Der Text passt nicht komplett ins QTextEdit. Es enstehen vertikale Scrollbalken. Ich möchte jetzt so scrollen, dass eine gegebene Zeile in der Mitte des QTextEdits erscheint.
lunar

Ganz grob vielleicht sowas:

Code: Alles auswählen

def scroll_to_line(self, textedit, lineno):
    document = textedit.document()
    wanted_block = document.findBlockByLineNumber(lineno)
    cursor = QTextCursor(wanted_block)
    rect = textedit.cursorRect(cursor)
    textedit.verticalScrollBar().setSliderPosition(rect.y())
Perfekt ist das nicht, es trifft die Mitte nicht ganz, aber zwischen den ganzen Koordinaten und Positionen hab ich dann die Lust verloren ;)
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Danke, sieht vernünftig aus. Probiere ich aus, sobald ich zu Hause bin.
Antworten