首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QTextEdit中删除最后一行

从QTextEdit中删除最后一行
EN

Stack Overflow用户
提问于 2013-03-11 03:33:38
回答 2查看 5.7K关注 0票数 4

我正在使用这段代码尝试删除QTextEdit中的最后一行:

代码语言:javascript
复制
    ui->textEdit_2->textCursor().setPosition( QTextCursor::End);
    auto k = ui->textEdit_2->textCursor().currentTable();
    k->removeRows(k->rows() - 1, 1);

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

我做错了什么吗?如果是,如何解决?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 04:06:14

试试这个(已测试):

代码语言:javascript
复制
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);
票数 10
EN

Stack Overflow用户

发布于 2013-03-11 03:42:54

(只需将其保留为未删除,以显示执行相同操作的另一种方式)

您可以尝试这样删除最后一行:

代码语言:javascript
复制
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);

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

代码语言:javascript
复制
cursor.movePosition(QTextCursor::End);

然后在删除文本之后。

代码语言:javascript
复制
ui->textEdit_2->setTextCursor(savedCursorPos); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15326569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档