2011-02-08 24 views

Odpowiedz

3

Po zmianie rozmiaru kontrolki edycji tekstu zostaje wywołana QWidget::resizeEvent. Musisz tylko zastąpić tę funkcję w swojej podklasie i zadzwonić pod numer verticalScrollBar -> setValue (verticalScrollBar -> minimum()) (lub maximum()).

+0

Dzięki za odpowiedź! Chciałbym opracować program klienta terminalowego dla specjalnego serwera. Jest pole wyboru, za pomocą którego można zablokować/odblokować ekran. Jeśli jest odblokowany, przetworzone przychodzące pakiety zapisane w QPlainTextBox automatycznie wymusiłyby przewijanie paska na dole (niezależnie od pozycji kursora). Twoje rozwiązanie wydaje się obiecujące. Dam ci informację zwrotną później ... Dzięki! – falconium

7

można użyć „” ensureCursorVisible metody:

void QTextEdit::ensureCursorVisible() 
Ensures that the cursor is visible by scrolling the text edit if necessary. 

To nie jest szczelina, choć, więc nie można go podłączyć do dowolnego sygnału - trzeba będzie tworzyć coś, co możesz podłączyć do pustego sygnału textChanged().

Oświadczenie: Być może źle zrozumiałem Twoje pytanie - zakładam, że chcesz przewinąć w dół, gdy do tekstu zostanie dołączony tekst.

+0

to powinno być zaakceptowane jako poprawna odpowiedź. – warunanc

14

QTextEdit i QPlainTextEdit są dziedziczone z QAbstractScrollArea. Obiekt QAbstractScrollArea zapewnia dostęp do paska przewijania za pomocą metody verticalScrollBar().

Dlatego, aby przejść do góry:

ui.textEdit->verticalScrollBar()->setValue(0); 

I, aby przejść do dołu:

ui.textEdit->verticalScrollBar()->setValue(ui.textEdit->verticalScrollBar()->maximum()); 

ten powinien działać zarówno QTextEdit i QPlainTextEdit.

+0

Tęskniłem, że odpowiedź TonyK już rozwiązuje problem. Odpowiedź TonyK powinna zostać zaakceptowana. – d11

0

Tutaj zamieszczam moje Rozwiązanie jako powyższe rozwiązanie działa w moim przypadku.

Chcę uzyskać kursor na początku QTextbrowser.

Korzystając QTextEdit::setTextCursor można przesunąć kursor widoczny w którym chcesz:

 // Go to beginning 
    QTextCursor textCursor = ui->textBrowser->textCursor(); 
    textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor,1); 
    ui->textBrowser->setTextCursor(textCursor); 

Nadzieję, że to pomoże komuś i zaoszczędzić swój cenny czas.

0

Zrobiłem w Pyqt.

self.scrollArea.verticalScrollBar(). RangeChanged.connect (self.change_scroll)

--------

@pyqtSlot(int, int) 
def change_scroll(self, min, max): 
    print("cambio", min, max) 
    self.scrollArea.verticalScrollBar().setSliderPosition(max)