Qt4 将QTextCursor移动到末尾时出现问题
我试图在我正在编写的编辑器中实现一个简单的文本搜索。在出现这个问题之前,一切都很好!我试图在这里实现反向搜索。程序是:向后查找主题,如果未找到,则发出一次蜂鸣声,如果再次按下“查找”按钮,则转到文档末尾,然后再次进行搜索。“reachedEnd”是一个int,定义为编辑器类的私有成员。下面是执行向后搜索的函数Qt4 将QTextCursor移动到末尾时出现问题,qt4,qtextdocument,Qt4,Qtextdocument,我试图在我正在编写的编辑器中实现一个简单的文本搜索。在出现这个问题之前,一切都很好!我试图在这里实现反向搜索。程序是:向后查找主题,如果未找到,则发出一次蜂鸣声,如果再次按下“查找”按钮,则转到文档末尾,然后再次进行搜索。“reachedEnd”是一个int,定义为编辑器类的私有成员。下面是执行向后搜索的函数 void TextEditor::findPrevPressed() { QTextDocument *document = curTextPage()->document(
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,这意味着失败。这怎么可能失败?!!提前感谢。如果我像这样简化您的代码:
if (!cursor.isNull()) {
// (...)
}
else {
// (...)
cursor.movePosition(QTextCursor::End);
// (...)
}
…我看到您在cursor.isNull()条件为true时调用movePosition()函数。
也许这就是它不起作用的原因…因为这个问题得到了一些看法,而且它似乎是一个常见的问题,我认为它应该得到一个答案(即使作者最肯定地找到了答案) 从文件中: QTextCursor QPlainTextEdit::textCursor()常量
返回 表示当前可见光标的QTextCursor注意 对返回的游标所做的更改不会影响QPlainTextEdit的游标; 使用setTextCursor()更新可见光标 因此,通过执行
cursor.movePosition(QTextCursor::End),您得到了它的一个副本代码>它不起作用
我所做的是:
QTextCursor newCursor = new QTextCursor(document);
newCursor.movePosition(QTextCursor::End);
curTextPage()->setTextCursor(newCursor);
非常感谢您的帮助,但是cursor.isNull()返回游标是否指向文档中的某个位置。这并不意味着游标是空指针或其他什么(AFAIK),并且游标在这里不是指针。但我认为这是一个有用的提示,我将再次检查文档。确实谢谢。如何使用QTextEdit
?@jww因此,如果您的文本框是QTextEdit对象,那么您将执行QTextCursor newCursor=textbox->textCursor();newCursor.movePosition(QTextCursor::End);textbox->setTextCursor(newCursor);