使用Qt框架选择文本时遇到问题。例如,如果我有此文档:“没有时间休息”。而且我想选择“ime for r”并从文档中删除这段文本,我应该如何使用QTextCursor做到这一点?这是我的代码:
QTextCursor *cursor = new QTextCursor(ui->plainTextEdit->document());
cursor->setPosition(StartPos,QTextCursor::MoveAnchor);
cursor->setPosition(EndPos,QTextCursor::KeepAnchor);
cursor->select(QTextCursor::LineUnderCursor);
cursor->clearSelection();
不幸的是,它从文本中删除了整行。我尝试使用其他选择类型,如WordUnderCursor或BlockUnderCursor,但没有结果。也许有更好的方法呢?提前致谢。
最佳答案
您的代码中有几个问题:
cursor->select(QTextCursor::LineUnderCursor);
行选择整个当前行。您不想删除整行,那么为什么要写这个呢?删除此行代码。 clearSelection()
只是取消选择所有内容。请改用removeSelectedText()
。 QTextCursor
创建new
。是正确的,但不是必需的。您应尽可能避免使用指针。 QTextCursor
通常通过值或引用传递。您也可以使用QPlainTextEdit::textCursor
获得编辑光标的副本。 因此,代码应如下所示:
QTextCursor cursor = ui->plainTextEdit->textCursor();
cursor.setPosition(StartPos, QTextCursor::MoveAnchor);
cursor.setPosition(EndPos, QTextCursor::KeepAnchor);
cursor.removeSelectedText();