如何在Qt中将文本附加到QPlainTextEdit并保持滚动条稳定?



我有一个QPlainTextEdit,我必须以两种方式填充它。

当我想在末尾添加文本时,我可以非常简单地使用appendPlainText()提供的功能来做到这一点。当垂直滚动条达到下边界时,我会这样做,如果用户在此之后滚动,那么我会附加新文本。这执行得非常顺利。

但是我想做的是当用户向上滚动并且滚动条达到上限时,如果用户在此之后滚动(向上),我想在它前面附加文本。但问题是没有这样的函数prependPlainText(),因此,我首先从我的QPlainTextEdit中获取明文,这是一个QString,使用QStringprepend,然后将新文本附加到QPlainTextEdit。但问题是滚动条在我向QPlainTextEdit追加文本后立即向下,我想要的是将滚动条保持在上限。 就像滚动条在前面的场景中保持在下边界一样。

结合这个和那个 id 去

ui->qpte->document()->setPlainText(text + "n" + ui->qpte->toPlainText());

qpteQPlainTextEdit的名称,text新文本的QStringui是指向您的UI::MainWindow左右QWidget的指针。

不确定这是否是性能明智的(当然不能很好地扩展)

如果你打算使用x29a的方法,你可以考虑像这样使用它:

ui->qpte->document()->setPlainText(text + "n" + ui->qpte->toHtml());

这样您以前的格式就会被丢弃。

或者,也许最好像这样使用此处建议的内容:

QTextCursor cursor = QTextCursor(ui->qpte->document());
cursor.setPosition(0);
ui->qpte->setTextCursor(cursor);
ui->qpte->insertHtml(text);

最新更新