如果在QPlainTextEdit或QTextEdit区域发生变化,如何编程滚动条跳转到底部/顶部?

fal*_*ium 11 qt position scrollbar qtextedit

如果在QPlainTextEdit或QTextEdit区域发生变化,如何编程滚动条跳转到底部/顶部?看起来它没有任何控制功能.

d11*_*d11 25

QTextEdit和QPlainTextEdit都继承自QAbstractScrollArea.QAbstractScrollArea对象通过verticalScrollBar()方法提供对滚动条的访问.

因此,跳到顶部:

ui.textEdit->verticalScrollBar()->setValue(0);
Run Code Online (Sandbox Code Playgroud)

并跳到底部:

ui.textEdit->verticalScrollBar()->setValue(ui.textEdit->verticalScrollBar()->maximum());
Run Code Online (Sandbox Code Playgroud)

这应该适用于QTextEdit和QPlainTextEdit.


Jan*_*Vos 9

您可以使用'ensureCursorVisible'方法:

void QTextEdit::ensureCursorVisible ()
Ensures that the cursor is visible by scrolling the text edit if necessary.
Run Code Online (Sandbox Code Playgroud)

这不是一个插槽,所以你不能将它连接到任何信号 - 你必须自己创建一些你可以连接到void textChanged()信号的东西.

免责声明:我可能误解了您的问题 - 我假设您想在文本附加一些文字时向下滚动.


Ton*_*nyK 6

调整文本编辑控件的大小时,QWidget::resizeEvent将调用该控件.您只需在子类中覆盖此函数,然后调用verticalScrollBar -> setValue (verticalScrollBar -> minimum())(或maximum()).