gpt4 book ai didi

c++ - 如何在不添加换行符的情况下将文本附加到 QPlainTextEdit,并将滚动保持在底部?

转载 作者:IT老高 更新时间:2023-10-28 12:47:51 32 4
gpt4 key购买 nike

我需要将文本附加到 QPlainTextEdit 而不在文本中添加换行符,但是 appendPlainText()appendHtml() 方法都添加了实际上是新段落。

我可以使用 QTextCursor 手动完成:

QTextCursor text_cursor = QTextCursor(my_plain_text_edit->document());
text_cursor.movePosition(QTextCursor::End);

text_cursor.insertText("string to append. ");

这行得通,但如果在追加之前滚动在底部,我还需要保持滚动。

我试图从 Qt 的源代码中复制逻辑,但我坚持下去,因为实际上使用了 QPlainTextEditPrivate 类,没有它我找不到做同样事情的方法:比如说,我在 QPlainTextEdit 中没有看到方法 verticalOffset()

实际上,这些来源包含许多奇怪的东西(至少乍一看),我不知道如何实现。

这里是append()的源代码:http://code.qt.io/cgit/qt/qt.git/tree/src/gui/widgets/qplaintextedit.cpp#n2763

最佳答案

我只是引用我在这里找到的内容:

http://www.jcjc-dev.com/2013/03/qt-48-appending-text-to-qtextedit.html


我们只需要将光标移动到QTextEdit中内容的末尾并使用insertPlainText。在我的代码中,它看起来像这样:

myTextEdit->moveCursor (QTextCursor::End);
myTextEdit->insertPlainText (myString);
myTextEdit->moveCursor (QTextCursor::End);

就这么简单。如果您的应用程序需要在添加文本之前将光标保持在原来的位置,您可以使用 QTextCursor::position()QTextCursor::setPosition() 方法,或者

只是在修改光标位置之前复制光标 [QTextCursor QTextEdit::textCursor()] 然后将其设置为光标 [void QTextEdit::setTextCursor(const QTextCursor & cursor)]

这是一个例子:

QTextCursor prev_cursor = myTextEdit->textCursor();
myTextEdit->moveCursor (QTextCursor::End);
myTextEdit->insertPlainText (myString);
myTextEdit->setTextCursor (&prev_cursor);

关于c++ - 如何在不添加换行符的情况下将文本附加到 QPlainTextEdit,并将滚动保持在底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13559990/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com