首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QTextCursor选择一段文本

使用QTextCursor选择一段文本
EN

Stack Overflow用户
提问于 2014-01-14 20:06:15
回答 2查看 7.4K关注 0票数 4

在使用Qt框架选择文本片段时遇到问题。例如,如果我有这个文档:“没有休息的时间”。我想选择"ime“并从文档中删除这段文本,我应该如何使用QTextCursor来完成它呢?这是我的代码:

代码语言:javascript
复制
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,但没有结果。或者有更好的方法去做?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-14 20:32:58

代码中有几个问题:

  1. cursor->select(QTextCursor::LineUnderCursor);线选择整个电流线。您不想删除整行,那么为什么要写这个呢?删除这一行代码。
  2. clearSelection()只是取消了所有的选择。使用removeSelectedText()代替。
  3. 不要使用QTextCursor创建new。这是正确的,但不需要。如果可能的话,你应该避免指针。QTextCursor通常通过值或引用传递。此外,还可以使用QPlainTextEdit::textCursor获取编辑游标的副本。

因此,代码应该是这样的:

代码语言:javascript
复制
QTextCursor cursor = ui->plainTextEdit->textCursor();
cursor.setPosition(StartPos, QTextCursor::MoveAnchor);
cursor.setPosition(EndPos, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
票数 7
EN

Stack Overflow用户

发布于 2014-01-14 20:24:30

您正在清除所选内容,而不是基于您的愿望的字符。

请阅读该方法的文件:

void::clearSelection() 通过将锚设置为光标位置来清除当前选择。 注意,它做的是,而不是,删除所选内容的文本。

您可以看到,它只删除了所选内容,而没有删除文本。请改用下列方法:

void::removeSelectedText() 如果有选择,则删除其内容;否则什么也不做。

在讨论了这一理论之后,让我们来演示一下你能写些什么:

代码语言:javascript
复制
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();
        ^^^^^^^^^^^^^^^^^^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21122928

复制
相关文章

相似问题

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