我正在使用这段代码尝试删除QTextEdit中的最后一行:
ui->textEdit_2->textCursor().setPosition( QTextCursor::End);
auto k = ui->textEdit_2->textCursor().currentTable();
k->removeRows(k->rows() - 1, 1);但是我得到了一个分段错误。经过调试,我发现当调用removeRows时,k是空的。
我做错了什么吗?如果是,如何解决?
发布于 2013-03-11 04:06:14
试试这个(已测试):
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);发布于 2013-03-11 03:42:54
(只需将其保留为未删除,以显示执行相同操作的另一种方式)
您可以尝试这样删除最后一行:
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); https://stackoverflow.com/questions/15326569
复制相似问题