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

发布于 2024-10-16 15:40:57 字数 71 浏览 7 评论 0原文

如何编程滚动条在 QPlainTextEdit 或 QTextEdit 区域发生变化时跳转到底部/顶部? 貌似没有任何控制功能。

How to program scrollbar to jump to bottom/top in case of change in QPlainTextEdit or QTextEdit area?
It looks like it doesn't have any controlling function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

盛夏尉蓝 2024-10-23 15:40:57

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

因此,跳到顶部:

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

跳到底部:

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

这应该适用于 QTextEdit 和 QPlainTextEdit。

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.

决绝 2024-10-23 15:40:57

您可以使用“ensureCursorVisible”方法:

void QTextEdit::ensureCursorVisible ()
如有必要,通过滚动文本编辑确保光标可见。

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

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

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.

冰之心 2024-10-23 15:40:57

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

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()).

牵你手 2024-10-23 15:40:57

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

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)
指尖上得阳光 2024-10-23 15:40:57

在这里,我发布了我的解决方案,上述解决方案在我的案例中有效。

我想将光标置于QTextbrowser的开头。

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

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

希望,这会对某些人有所帮助并节省他们宝贵的时间。

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.

时间海 2024-10-23 15:40:57

我正在使用 QTextEdit 和 textEdit.verticalScrollBar().setValue(0) 对我不起作用。

就我而言,textEdit.moveCursor(QTextCursor.Start) 可以滚动到顶部。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文