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

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

前言:

一般浏览器都支持显示浏览过的网页历史记录,在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()参数设置为空即可。就是清空查找航编辑器中的内容,然后再点击“查找”按钮。这时就取消了查找。

猜你喜欢

转载自juejin.im/post/7080096293443338277