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

如果QPlainTextEdit或QTextEdit区域发生更改,如何编程滚动条跳转到底部/顶部?,qt,scrollbar,position,qtextedit,Qt,Scrollbar,Position,Qtextedit,如果QPlainTextEdit或QTextEdit区域发生更改,如何编程滚动条跳转到底部/顶部? 它看起来没有任何控制功能。调整文本编辑控件的大小时,将调用QWidget::resizeEvent。您只需在子类中重写此函数,并调用verticalScrollBar->setValue(verticalScrollBar->minimum())(或maximum())。您可以使用“EnsureRecursorVisible”方法: 不过,这不是插槽,因此无法将其连接到任何信号——您必须自己创建一

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

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

您可以使用“EnsureRecursorVisible”方法:

不过,这不是插槽,因此无法将其连接到任何信号——您必须自己创建一些可以连接到void textChanged()信号的内容


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

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

因此,要跳到顶端:

ui.textEdit->verticalScrollBar()->setValue(0);
然后跳到底部:

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

这应该适用于qtexdit和QPlainTextEdit。

在这里,我发布了我的解决方案,因为上述解决方案在我的情况下有效

我想在
QTextbrowser
的开头获取光标

通过使用,可以将可见光标移动到所需的位置:

     // 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\u滚动)

--------
我正在使用QTextEdit和
文本编辑。verticalScrollBar()。setValue(0)
对我不起作用


在我的例子中,
textEdit.moveCursor(QTextCursor.Start)
可以滚动到顶部。

我们有两种不同的解释!你的意思是改变文字还是改变几何结构?谢谢你的回答!我想为一个特殊的服务器开发一个终端客户端程序。有一个复选框,可用于锁定/解锁屏幕。如果它被解锁,则写入QPlainTextBox的已处理传入数据包将自动强制滚动条位于底部(无论光标位置如何)。你的解决方案似乎很有希望。稍后我会给你一个反馈。。。谢谢我错过了TonyK的答案已经解决了问题。TonyK的答案应该被接受。请注意,这可能不是您想要的垂直和水平滚动。在我的情况下,文本没有完全显示-这是有帮助的-谢谢!很好用!
     // Go to beginning
     QTextCursor textCursor = ui->textBrowser->textCursor();
     textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor,1);
     ui->textBrowser->setTextCursor(textCursor);
@pyqtSlot(int, int)
def change_scroll(self, min, max):
    print("cambio", min, max)
    self.scrollArea.verticalScrollBar().setSliderPosition(max)