我需要将文本附加到QPlainTextEdit
无需在文本中添加换行符,但这两种方法appendPlainText()
and appendHtml()
实际上添加了新段落。
我可以手动执行此操作QTextCursor
:
QTextCursor text_cursor = QTextCursor(my_plain_text_edit->document());
text_cursor.movePosition(QTextCursor::End);
text_cursor.insertText("string to append. ");
这可行,但如果在附加之前它位于底部,我还需要将滚动保持在底部。
我试图从 Qt 的源代码中复制逻辑,但我坚持了下来,因为实际上有QPlainTextEditPrivate
使用了类,如果没有它,我找不到执行相同操作的方法:比如说,我没有看到方法verticalOffset()
in QPlainTextEdit
.
实际上,这些来源包含许多奇怪的(至少乍一看)东西,我不知道如何实现它。
这是源代码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()
and 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)