2011-02-08 452 views

回答

3

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

+0

感谢您的回答! 我想为特殊服务器开发终端客户端程序。有一个复选框可用来锁定/解锁屏幕。如果它被解锁,那么处理的写入QPlainTextBox的传入数据包将自动强制滚动条位于底部(不管光标位置)。你的解决方案看起来很有希我稍后会给你一个反馈......谢谢! – falconium 2011-02-10 22:56:03

7

您可以使用“ensureCursorVisible”的方法:

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

这不是一个插槽,虽然如此,你不能把它连接到任何信号 - 你必须创建你自己可以连接到void textChanged()信号。

声明:我可能误解了你的问题 - 我假设你想在文本追加到文本后向下滚动。

+0

这应该被接受为正确答案 – warunanc 2017-09-20 10:55:06

14

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

因此,跳转到顶部:

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

并跳转至底部:

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

这应该双方的QTextEdit和QPlainTextEdit工作。

+0

我错过了TonyK的回答已经解决了这个问题。 TonyK的回答应该被接受。 – d11 2012-11-23 10:56:07

0

在这里我发布我的解决方案如上解决方案在我的情况下工作。

我想让光标在QTextbrowser的开头。

使用QTextEdit::setTextCursor,你可以将你想要的可见光标:

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

希望,这将有助于一些之一,并节省宝贵的时间。

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) 
相关问题