QPlainTextEdit 또는 QTextEdit 영역이 변경된 경우 스크롤바를 아래/위로 이동하는 방법을 프로그래밍 하시겠습니까? 제어 기능이없는 것 같습니다.QPlainTextEdit 또는 QTextEdit 영역이 변경된 경우 스크롤바를 아래/위로 이동하도록 프로그래밍하는 방법은 무엇입니까?
답변
텍스트 편집 컨트롤의 크기를 조정하면 QWidget::resizeEvent
이 호출됩니다. 하위 클래스에서이 함수를 무시하고 verticalScrollBar -> setValue (verticalScrollBar -> minimum())
(또는 maximum()
)을 호출하면됩니다.
답변 해 주셔서 감사합니다! 특수 서버용 터미널 클라이언트 프로그램을 개발하고 싶습니다. 화면을 잠 그거나 잠금을 해제 할 수있는 확인란이 있습니다. 잠금이 해제되면 QPlainTextBox에 쓰여진 처리 된 수신 패킷이 자동으로 스크롤 막대를 (커서 위치에 관계없이) 맨 아래에 놓습니다. 귀하의 솔루션은 유망한 것으로 보입니다. 나중에 내가 너에게 피드백을 줄거야. 고마워! – falconium
: 당신이 어떤 신호에 연결할 수 있도록
void QTextEdit::ensureCursorVisible() Ensures that the cursor is visible by scrolling the text edit if necessary.
이하지만, 슬롯하지 않습니다 - 당신은 만들어야합니다 void textChanged() 신호에 연결할 수있는 무언가.
면책 조항 : 질문이 잘못 이해되었을 수도 있습니다. 텍스트에 텍스트가 추가되면 아래로 스크롤하려는 것으로 간주합니다.
정답으로 받아 들여야합니다 – warunanc
QTextEdit 및 QPlainTextEdit는 모두 QAbstractScrollArea에서 상속됩니다. QAbstractScrollArea 객체는 verticalScrollBar() 메서드를 통해 스크롤 막대에 대한 액세스를 제공합니다. 따라서
는 상단로 이동합니다 :ui.textEdit->verticalScrollBar()->setValue(0);
그리고 맨 아래로 이동하기 :
ui.textEdit->verticalScrollBar()->setValue(ui.textEdit->verticalScrollBar()->maximum());
이은 QTextEdit와 QPlainTextEdit 모두 작동합니다.
TonyK의 대답이 이미 문제를 해결하지 못했습니다. TonyK의 답변을 받아 들여야합니다. – d11
여기에서 내 을 게시 할 예정입니다. 솔루션 위와 같은 해결책이 내 경우에 유용합니다.
QTextbrowser
의 시작 부분에 커서를 가져 오려고합니다. 그것은 어떤 일에 도움이 소중한 시간을 절약 할 수,
// Go to beginning
QTextCursor textCursor = ui->textBrowser->textCursor();
textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor,1);
ui->textBrowser->setTextCursor(textCursor);
희망 : QTextEdit::setTextCursor를 사용하여
, 당신은 당신이 원하는 보이는 커서를 이동할 수 있습니다.나는 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)
우리는 두 개의 서로 다른 해석이있다! 텍스트를 변경하거나 지오메트리를 변경한다는 의미입니까? – TonyK