开发者

How to program scrollbar to jump to bottom/top in case of change in QPlainTextEdit or QTextEdit area?

How to program scrollbar to jump to bottom/top in case of change in QPlainTextEdit or QText开发者_C百科Edit area? It looks like it doesn't have any controlling function.


QTextEdit and QPlainTextEdit are both inherited from QAbstractScrollArea. The QAbstractScrollArea object provides access to the scrollbar through the verticalScrollBar() method.

Thus, to jump to the top:

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

And to jump to the bottom:

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

This should work for both QTextEdit and QPlainTextEdit.


You can use the 'ensureCursorVisible' method:

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

This is not a slot, though, so you can't connect it to any signal -- you'll have to create something yourself that you can connect to the void textChanged() signal.

Disclaimer: I may have misunderstood your question -- I assume you want to scroll down when some text is appended to the text.


When a text edit control is resized, QWidget::resizeEvent is called. You just have to override this function in your subclass, and call verticalScrollBar -> setValue (verticalScrollBar -> minimum()) (or maximum()).


I have done in 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)


Here I am posting my Solution as above solution dint work in my case.

I want to get the cursor at the beginning of QTextbrowser.

By using QTextEdit::setTextCursor, you can move the visible cursor where you want:

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

Hope, it will help to some one and save their precious time.


I am using QTextEdit and textEdit.verticalScrollBar().setValue(0) doesn't work for me.

In my case, textEdit.moveCursor(QTextCursor.Start) can scroll to the top.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜