0
点赞
收藏
分享

微信扫一扫

QLineEdit修改文本实时查找QTextBrowser内的匹配数据

哈哈我是你爹呀 2022-02-11 阅读 26
ui

在这里插入图片描述
首先链接槽函数,在QLineEdit修改文本时发出信号,进行查找;
如果已经匹配一次之后再修改文本进行匹配,例如我们需要匹配“MMS”这个字段,进行的操作就是连续输入’M’‘M’'S’3个字符,但是在输入第二个字符时,如果我们不提前移动光标,就会导致第二次匹配跳过当前匹配的这一个单词。
所以我们需要在调用find函数时,提前移动光标至当前被匹配的字符串前面,这样才能保证下一次匹配会先匹配这一串字符串。
这里可以使用QTextBrowser::moveCursor或者QTextCursor::movePosition两个接口,但是QTextBrowser::moveCursor没有往左移动N个字符的功能,所以使用QTextCursor::movePosition;
需要额外注意的时,修改QTextCursor之后,记得使用QTextBrowser::setTextCursor,不然操作时不会生效的!!!

代码如下:

connect(ui.ldFind, &QLineEdit::textChanged, this, [this](const QString& text) {
        QTextCursor textCursor = ui.textBrowser->textCursor();
        //文本修改的时候,需要把光标移动至当前选中文本的前面
        textCursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, textCursor.selectedText().size());
        ui.textBrowser->setTextCursor(textCursor);//记得调用这个函数,否则修改不会生效!
        //ui->tbXMLShow->moveCursor(QTextCursor::StartOfWord);//不一定是一个单词
        ui.textBrowser->find(ui.ldFind->text());
        });
举报

相关推荐

0 条评论