Autoscroll in TextEdit

Alles rund um die Programmierung mit Qt
Antworten
MrLast
Beiträge: 5
Registriert: 8. November 2005 11:01

Autoscroll in TextEdit

Beitrag 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?
Psychodad
Beiträge: 15
Registriert: 26. November 2005 07:30

Beitrag 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.
Daxtar
Beiträge: 5
Registriert: 11. Januar 2008 20:51

Beitrag 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...
Antworten