当前位置 : 主页 > 手机开发 > 无线 >

qt4 – 将QTextCursor移动到结尾的问题

来源:互联网 收集:自由互联 发布时间:2021-06-10
我正在尝试在我正在编写的编辑器中实现一个简单的文本搜索.一切都很好,直到这个问题!我正在尝试在这里实现向后搜索.过程是:向后查找主题,如果未找到,则发出一次蜂鸣声,如果再
我正在尝试在我正在编写的编辑器中实现一个简单的文本搜索.一切都很好,直到这个问题!我正在尝试在这里实现向后搜索.过程是:向后查找主题,如果未找到,则发出一次蜂鸣声,如果再次按下查找按钮,则转到文档末尾,然后再次进行搜索. “reachEnd”是一个int,定义为编辑器类的私有成员.这是执行向后搜索的功能.

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);

网友评论