在使用Qt框架选择文本片段时遇到问题。例如,如果我有这个文档:“没有休息的时间”。我想选择"ime“并从文档中删除这段文本,我应该如何使用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,但没有结果。或者有更好的方法去做?提前谢谢。
发布于 2014-01-14 20:32:58
代码中有几个问题:
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();发布于 2014-01-14 20:24:30
您正在清除所选内容,而不是基于您的愿望的字符。
请阅读该方法的文件:
void::clearSelection() 通过将锚设置为光标位置来清除当前选择。 注意,它做的是,而不是,删除所选内容的文本。
您可以看到,它只删除了所选内容,而没有删除文本。请改用下列方法:
void::removeSelectedText() 如果有选择,则删除其内容;否则什么也不做。
在讨论了这一理论之后,让我们来演示一下你能写些什么:
QTextCursor *cursor = new QTextCursor(ui->plainTextEdit->document());
cursor->setPosition(StartPos,QTextCursor::MoveAnchor);
cursor->setPosition(EndPos,QTextCursor::KeepAnchor);
// If any, this should be block selection
cursor->select(QTextCursor::BlockUnderCursor);
cursor->removeSelectedText();
^^^^^^^^^^^^^^^^^^https://stackoverflow.com/questions/21122928
复制相似问题