Seite 1 von 1

Autoscroll in TextEdit

Verfasst: 30. November 2005 11:24
von MrLast
Hallo!

Mit append hänge ich an ein texteditfeld immer neue Einträge an. Nun komme ich so irgendwan am unteren Rand an, und möchte aber das dann weitergescrollt wird. Folgender Code sollte funktionieren, aber bei mir tut sich gar nichts:

Code: Alles auswählen

GUI.TextEditStatus->append(line.str().c_str());
QTextCursor c =  GUI.TextEditStatus->textCursor();
c.movePosition(QTextCursor::End);
GUI.TextEditStatus->setTextCursor(c);
GUI.TextEditStatus->ensureCursorVisible(); // macht keinen Unterschied ob die Zeile vorhanden ist oder nicjt
Weiß jemand warum oder hat noch eine andere Lösung?

Verfasst: 30. November 2005 12:19
von Psychodad
Ich habe da gerade mal etwas experimentiert.

Also wenn nichts im TextEdit steht und man immer nur appends macht, dann scrollt er automatisch mit. Es sei den man fast als Nutzer die Scrollbars an. Anscheint funktioniert das Scrollen immer dann und nur dann, wenn der Cursor auf der letzten Position im TextEdit steht. Man kann das Scrollen im Fall das der Cursor nicht am Ende steht, durch GUI.TextEditStatus->ensureCursorVisible(); immer wieder erzwingen, es hakt sich aber nicht mehr ein.

Verfasst: 20. Januar 2008 19:31
von Daxtar
altes Thema, aber gerade bei mir wieder aktuell. Ich brauche ein einfaches logFenster, ganz nach dem 'tail -f' Motto.
Habe mir mit ner wrapper function geholfen:

Code: Alles auswählen

void MainWindowImpl::logtext(QTextEdit * textEdit, QString text) {
	textEdit->moveCursor(QTextCursor::End);
	textEdit->insertPlainText(text);
	textEdit->ensureCursorVisible();
}
frage ich aber ob das durch virtuoses setzen von diversen properties nicht auch anders funktioniert haette...