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

在这里插入图片描述
首先链接槽函数,在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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值