0

如何以编程方式编辑 QPlainTextEdit 的内容?

例如,我可能想要实现“查找和替换”,或者删除特定的文本行,或者插入一些文本。

简单的方法是完全重新加载内容:

QString text = ui->plainTextEdit->toPlainText();
... // Now edit text.
ui->plainTextEdit->setPlainText(text);

但是,这似乎很浪费,而且我们还会丢失通过QPlainTextEdit::appendHtml().

从 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);

我应该使用哪种方法来编辑内容?第二个有什么优势吗?

编辑:它甚至是一种有效的方法,还是只是一种黑客行为?

4

1 回答 1

1

QPlainTextEdit文档代表:

可以使用 QTextCursor 类或使用便捷函数 insertPlainText()、applainText() 或 paste() 插入文本。

所以这是一个正确的编辑方式QTextCursor

于 2015-03-27T08:02:52.810 回答