写点什么

Qt | 实现网页历史记录和查找功能 QWebEngineView

作者:YOLO.
  • 2022 年 10 月 08 日
    河北
  • 本文字数:985 字

    阅读完需:约 3 分钟

Qt | 实现网页历史记录和查找功能 QWebEngineView

前言:

一般浏览器都支持显示浏览过的网页历史记录,在 Qt WebEngine Widgets 模块中,QWebEngineHistory 类可以表示 QWebEnginePage 的浏览历史。所以我们可以通过 QWebEngineHistory 类来实现显示网页历史记录的功能。

QWebEngineView 中还提供了 findText()函数来实现网页中字符串的查找和高亮显示,可以通过使用 findText()函数来实现在网页中查找字符串的功能。

显示历史记录:

  • 使用 QWebEngineView 的 history() 函数可以返回一个 QWebEngineHistory 对象,它表示了一个 QWebEnginePage 的浏览历史。

  • QWebEngineHistory 使用了当前项的概念,将访问过的页面分为当前项、当前项以前的项目和当前项以后的项目 3 个部分。可以使用 back() 函数和 forward() 函数向后或者向前跳转。

  • 可以使用 currentItem() 函数来获取当前项。

  • 可以使用 goToItem() 函数来指定当前项。

  • 可以使用 backItems() 函数和 forwardItems() 函数获取所有可以向后浏览和可以向前浏览的项目列表。

  • 可以使用 items() 函数获取所有的项目列表。

  • 可以使用 count() 函数获取所有项目的总数。

  • 可以使用 clear() 函数清空历史。

例:

QListWidget historyList = new QListWidget;//应该定义为成员对象foreach(QWebEngineHistoryItem item, view->history()->items()){    QListWidget *history = new QListWidgetItem(item.title());    historyList->addItem(history);}historyList->show();
复制代码

查找字符串:

  • QWebEngineView 中还提供了 findText() 函数来实现网页中字符串的查找和高亮显示,默认是向前查找而且不区分大小写。

  • 可以通过设置第 2 个参数 QWebEnginePage::FindFlags 修改为向后查找(QWebEnginePage::FindBackward)或区分大小写(QWebEnginePage::FindCaseSensitively)。

例:

QLineEdit *findEdit;//定义为成员对象findEdit = new QLineEdit(this);findEdit->setMaximumWidth(150);ui->mainToolBar->addWidget(findEdit);ui->mainToolBar->addAction(tr("查找"), [this]{    view->findText(findEdit->text());});
复制代码

这里创建了一个行编辑框,用于输入要查找的字符串,然后将其添加到工具栏中,后面又在工具栏中添加了一个“查找”动作。点击查找按钮,就可以在页面上高亮显示所有查找到的字符串;多次点击“查找”按钮可以遍历所有查找到的字符串。

如果要取消查找,只需要将 findText()参数设置为空即可。就是清空查找航编辑器中的内容,然后再点击“查找”按钮。这时就取消了查找。

发布于: 刚刚阅读数: 6
用户头像

YOLO.

关注

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
Qt | 实现网页历史记录和查找功能 QWebEngineView_qt_YOLO._InfoQ写作社区