使用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();
    

    09-11 17:53