以编程方式编辑 QPlainTextEdit 的内容
Programmatically edit the contents of a QPlainTextEdit
如何以编程方式编辑 QPlainTextEdit 的内容?
例如,我可能想实现一个 "Find and Replace",或者删除特定的文本行,或者插入一些文本。
简单的方法是完全重新加载内容:
QString text = ui->plainTextEdit->toPlainText();
... // Now edit text.
ui->plainTextEdit->setPlainText(text);
然而,这似乎很浪费,而且我们还会丢失通过 QPlainTextEdit::appendHtml()
添加的任何格式。
Removing last line from QTextEdit 中概述了另一种方法 - 它们模拟用户编辑文本。答案适用于 QTextEdit,但我认为它也适用于 QPlainTextEdit:
ui->textEdit_2->setFocus();
QTextCursor storeCursorPos = ui->textEdit_2->textCursor();
ui->textEdit_2->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
ui->textEdit_2->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
ui->textEdit_2->moveCursor(QTextCursor::End, QTextCursor::KeepAnchor);
ui->textEdit_2->textCursor().removeSelectedText();
ui->textEdit_2->textCursor().deletePreviousChar();
ui->textEdit_2->setTextCursor(storeCursorPos);
我应该使用哪种方法来编辑内容?第二种有什么优势吗?
编辑:它是一种有效的方法,还是只是一种技巧?
QPlainTextEdit
文档站:
Text can be inserted using the QTextCursor class or using the
convenience functions insertPlainText(), appendPlainText() or paste().
所以用QTextCursor
编辑是正确的方法。
如何以编程方式编辑 QPlainTextEdit 的内容?
例如,我可能想实现一个 "Find and Replace",或者删除特定的文本行,或者插入一些文本。
简单的方法是完全重新加载内容:
QString text = ui->plainTextEdit->toPlainText();
... // Now edit text.
ui->plainTextEdit->setPlainText(text);
然而,这似乎很浪费,而且我们还会丢失通过 QPlainTextEdit::appendHtml()
添加的任何格式。
Removing last line from QTextEdit 中概述了另一种方法 - 它们模拟用户编辑文本。答案适用于 QTextEdit,但我认为它也适用于 QPlainTextEdit:
ui->textEdit_2->setFocus();
QTextCursor storeCursorPos = ui->textEdit_2->textCursor();
ui->textEdit_2->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
ui->textEdit_2->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
ui->textEdit_2->moveCursor(QTextCursor::End, QTextCursor::KeepAnchor);
ui->textEdit_2->textCursor().removeSelectedText();
ui->textEdit_2->textCursor().deletePreviousChar();
ui->textEdit_2->setTextCursor(storeCursorPos);
我应该使用哪种方法来编辑内容?第二种有什么优势吗?
编辑:它是一种有效的方法,还是只是一种技巧?
QPlainTextEdit
文档站:
Text can be inserted using the QTextCursor class or using the convenience functions insertPlainText(), appendPlainText() or paste().
所以用QTextCursor
编辑是正确的方法。