从QTextEdit删除最后一行

Removing last line from QTextEdit

本文关键字:一行 QTextEdit 删除 最后      更新时间:2023-10-16

我使用这段代码试图从QTextEdit中删除最后一行:

    ui->textEdit_2->textCursor().setPosition( QTextCursor::End);
    auto k = ui->textEdit_2->textCursor().currentTable();
    k->removeRows(k->rows() - 1, 1);

,但我得到一个分割错误。经过调试,我发现当removeRows被调用时,k是空的。

我做错了什么吗?如果是,如何修复?

Try this (test):

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

(保留此内容以显示执行相同操作的另一种方式)

你可以试着删除最后一行:

QTextCursor cursor = ui->textEdit_2->textCursor();
cursor.movePosition(QTextCursor::End);
cursor.select(QTextCursor::LineUnderCursor);
cursor.removeSelectedText();
cursor.deletePreviousChar(); // Added to trim the newline char when removing last line
ui->textEdit_2->setTextCursor(cursor);

如果您想将光标位置恢复到原来的位置,只需在调用

之前保存光标位置
cursor.movePosition(QTextCursor::End);

,然后删除文本。

ui->textEdit_2->setTextCursor(savedCursorPos);