好像是添加 cursor.movePosition(QTextCursor::StartOfWord); cursor.movePosition(QTextCursor::End);的问题
时间: 2024-03-08 09:46:20 浏览: 194
是的,您说得对。在我的先前的回答中,我不应该添加`cursor.movePosition(QTextCursor::End)`,因为它会将光标移动到文档的末尾,这会导致下一个`find()`方法从文档的末尾开始查找。这是一个错误,并且会导致无法匹配文本。
您可以修改代码,将`cursor.movePosition(QTextCursor::End)`删除,如下所示:
```python
QString searchString = "your string to search for";
QTextDocument* doc = ui->textEdit->document();
QRegularExpression regExp(searchString);
QTextCursor cursor(doc);
while (!cursor.isNull() && !cursor.atEnd()) {
// 在匹配位置上设置格式
QTextCharFormat format;
format.setForeground(Qt::green);
cursor = doc->find(regExp, cursor, QTextDocument::FindWholeWords);
if (!cursor.isNull()) {
// 将光标移动到匹配文本的开头
cursor.movePosition(QTextCursor::StartOfWord);
// 设置格式
cursor.mergeCharFormat(format);
}
}
```
这将允许`find()`方法从文档的开始处重新开始搜索,以便正确匹配所有文本。再次感谢您的指正。
阅读全文