Jak zaprogramować pasek przewijania, aby przejść do dołu/góry w przypadku zmiany w obszarze QPlainTextEdit lub QTextEdit? Wygląda na to, że nie ma żadnej funkcji kontrolującej.Jak zaprogramować pasek przewijania, aby przejść do dołu/góry w przypadku zmiany w obszarze QPlainTextEdit lub QTextEdit?
Odpowiedz
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()
).
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
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.
to powinno być zaakceptowane jako poprawna odpowiedź. – warunanc
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.
Tęskniłem, że odpowiedź TonyK już rozwiązuje problem. Odpowiedź TonyK powinna zostać zaakceptowana. – d11
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.
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)
Mamy dwie różne interpretacje! Masz na myśli zmianę w tekście lub zmianę geometrii? – TonyK