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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在QPlainTextEdit或QTextEdit区域发生变化,如何编程滚动条跳转到底部/顶部?相关的知识,希望对你有一定的参考价值。

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

答案

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

因此,跳到顶部:

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

并跳到底部:

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

这应该适用于QTextEdit和QPlainTextEdit。

另一答案

您可以使用'ensureCursorVisible'方法:

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

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

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

另一答案

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

另一答案

在这里,我发布我的解决方案,因为上面的解决方案不适用于我的情况。

我想把光标放在QTextbrowser的开头。

通过使用QTextEdit::setTextCursor,您可以将可见光标移动到您想要的位置:

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

希望,这将有助于一个人,并节省他们宝贵的时间。

另一答案

我在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)

以上是关于如果在QPlainTextEdit或QTextEdit区域发生变化,如何编程滚动条跳转到底部/顶部?的主要内容,如果未能解决你的问题,请参考以下文章

只允许 Ints 进入 QPlainTextEdit

Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类

QPlainTextEdit 强制重绘

在 QPlainTextEdit 中获取指向 QTextBlock 的指针

在 QTableView 中设置 QPlainTextEdit 委托的高度

如何将 setPlaceholderText 包装在 QPlainTextEdit 字段中?