我正在尝试在我正在编写的编辑器中实现一个简单的文本搜索.一切都很好,直到这个问题!我正在尝试在这里实现向后搜索.过程是:向后查找主题,如果未找到,则发出一次蜂鸣声,如果再
void TextEditor::findPrevPressed() { QTextDocument *document = curTextPage()->document(); QTextCursor cursor = curTextPage()->textCursor(); QString find=findInput->text(), replace=replaceInput->text(); if (!cursor.isNull()) { curTextPage()->setTextCursor(cursor); reachedEnd = 0; } else { if(!reachedEnd) { QApplication::beep(); reachedEnd = 1; } else { reachedEnd = 0; cursor.movePosition(QTextCursor::End); curTextPage()->setTextCursor(cursor); findPrevPressed(); } } }
问题是光标没有移动到最后!它返回False,这意味着失败.怎么会失败?!!提前致谢.
由于这个问题得到了一些看法并且它似乎是一个常见的问题,我认为它应该得到一个答案(即使作者肯定已经弄明白了).从文档:
QTextCursor QPlainTextEdit::textCursor() const
Returns a copy of the
QTextCursor that represents the currently visible cursor. Note that
changes on the returned cursor do not affect QPlainTextEdit’s cursor;
use setTextCursor() to update the visible cursor.
所以你得到了它的副本并通过执行cursor.movePosition(QTextCursor :: End);它不会起作用.
我做的是:QTextCursor newCursor = new QTextCursor(document);newCursor.movePosition(QTextCursor ::完);curTextPage() – > setTextCursor(newCursor);