c++ - 使用 QTextCursor 选择一段文本

标签 c++ qt qtgui qtextcursor

使用 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,但没有结果。或者也许有更好的方法来做到这一点?提前致谢。

最佳答案

您的代码中存在几个问题:

  1. cursor->select(QTextCursor::LineUnderCursor); 行选择整个当前行。你不想删除整行,那你为什么要写这个?删除这行代码。
  2. clearSelection() 只是取消选择所有内容。请改用 removeSelectedText()
  3. 不要使用new 创建QTextCursor。这是正确的,但不需要。您应该尽可能避免指针。 QTextCursor 通常通过值或引用传递。您也可以使用 QPlainTextEdit::textCursor 获取编辑光标的拷贝。

所以,代码应该是这样的:

QTextCursor cursor = ui->plainTextEdit->textCursor();
cursor.setPosition(StartPos, QTextCursor::MoveAnchor);
cursor.setPosition(EndPos, QTextCursor::KeepAnchor);
cursor.removeSelectedText();

关于c++ - 使用 QTextCursor 选择一段文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122928/

相关文章:

c++ - C++ 中的 GNU Radio QT GUI Sink

python - 如何使用Python在Maya中设置目录?目前使用 PyQt4 但欢迎任何建议

c++ - Q标签旋转

python - Cython c++ 模块,多次调用构造函数

c++ - 如何在 C++ JNI 中将十进制转换为十六进制

c++ - 如何在 C++ MFC 中同时打开两个对话框?

javascript - 使用 QML 和 QtQuick2 时如何将 .js 文件包含在另一个 .js 文件中?不涉及浏览器

c++ - 对模板函数的 undefined reference

c++ - 什么是 glVertexPointer 中的步幅,VBO 中的 glTexCoordPointer

qt - 适用于大型模型的 QCompleter