如果在QPlainTextEdit或QTextEdit区域发生变化,如何编程滚动条跳转到底部/顶部? 看起来它没有任何控制功能。
答案 0 :(得分:24)
QTextEdit和QPlainTextEdit都继承自QAbstractScrollArea。 QAbstractScrollArea对象通过verticalScrollBar()方法提供对滚动条的访问。
因此,跳到顶部:
ui.textEdit->verticalScrollBar()->setValue(0);
并跳到底部:
ui.textEdit->verticalScrollBar()->setValue(ui.textEdit->verticalScrollBar()->maximum());
这适用于QTextEdit和QPlainTextEdit。
答案 1 :(得分:8)
您可以使用'ensureCursorVisible'方法:
void QTextEdit::ensureCursorVisible () Ensures that the cursor is visible by scrolling the text edit if necessary.
这不是一个插槽,所以你无法将它连接到任何信号 - 你必须自己创建一些你可以连接到void textChanged()信号的东西。
免责声明:我可能误解了您的问题 - 我假设您想要在文本中添加一些文字时向下滚动。
答案 2 :(得分:6)
调整文本编辑控件的大小时,会调用QWidget::resizeEvent
。您只需在子类中覆盖此函数,然后调用verticalScrollBar -> setValue (verticalScrollBar -> minimum())
(或maximum()
)。
答案 3 :(得分:1)
我正在使用 QTextEdit 并且 textEdit.verticalScrollBar().setValue(0)
对我不起作用。
就我而言,textEdit.moveCursor(QTextCursor.Start)
可以滚动到顶部。
答案 4 :(得分:0)
在这里,我发布了解决方案,就像上面的解决方案dint一样。
我希望将光标放在QTextbrowser
的开头。
使用QTextEdit::setTextCursor,您可以将可见光标移动到所需位置:
// Go to beginning
QTextCursor textCursor = ui->textBrowser->textCursor();
textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor,1);
ui->textBrowser->setTextCursor(textCursor);
希望,这会对某人有所帮助并节省宝贵的时间。
答案 5 :(得分:0)
我在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)