【Qt初入江湖】Qt QWebEngineHistory 底层架构、原理详细描述

鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

     

QWebEngineHistory是Qt WebEngine模块中的一个类,它用于管理Web浏览历史。QWebEngineHistory的底层架构是基于Chromium引擎,它使用了Chromium的API来管理Web浏览历史。

底层架构:

QWebEngineHistory的底层架构是基于Chromium引擎,它使用了Chromium的API来管理Web浏览历史。在底层,QWebEngineHistory是一个单例对象,它包含了多个子组件,其中最重要的是QWebEnginePage和QWebEngineUrlRequestInterceptor。QWebEnginePage负责管理Web页面,而QWebEngineUrlRequestInterceptor负责拦截URL请求并进行修改。

实现架构图:

+----------------+              +------------------------+
|                |              |                        |
| QWebEnginePage |<-------------|    QWebEngineHistory   |
|                |              |                        |
+----------------+              +------------------------+
         |                                    |
         |                                    |
         |                                    |
         |                                    |
         |                                    |
+--------v-----------------------------+  +---v----------------------------+
| QWebEngineUrlRequestInterceptor       |  |                                |
|                                        |  |         Chromium API          |
| QWebEngineUrlRequestInterceptor       |  |                                |
+----------------------------------------+  +--------------------------------+

QWebEngineHistory是一个单例对象,它包含多个QWebEnginePage对象,用于管理Web浏览历史。在底层,QWebEngineHistory使用Chromium API来管理Web浏览历史。

原理详细操作描述:

在Qt中使用QWebEngineHistory非常简单。我们可以使用QWebEngineView类来创建Web页面,并使用QWebEngineView::page()函数获取QWebEnginePage对象。然后,我们可以使用QWebEnginePage::history()函数获取QWebEngineHistory对象,并使用它来管理Web浏览历史。例如,以下代码演示了如何在Web浏览历史中后退和前进:

QWebEngineView view;
view.show();

QWebEnginePage* page = view.page();
QWebEngineHistory* history = page->history();
history->back();
history->forward();

在上面的代码中,我们首先创建了一个QWebEngineView对象,并使用show()函数显示它。然后,我们使用QWebEngineView::page()函数获取QWebEnginePage对象,并使用QWebEnginePage::history()函数获取QWebEngineHistory对象。最后,我们使用back()函数和forward()函数在Web浏览历史中后退和前进。

类中函数使用原理:

QWebEngineHistory类提供了多个函数来管理Web浏览历史,如back()、forward()、goToItem()等等。这些函数用于在Web浏览历史中后退、前进和跳转到特定的历史记录项。

【pyton版】下面是QWebEngineHistory中一些常用函数的使用案例和详细介绍:

1. back()
该函数用于返回上一页。它会将当前页面导航到浏览历史记录中的前一个页面。

from PyQt5.QtWebEngineWidgets import QWebEngineView

# 创建WebEngine视图
view = QWebEngineView()

# 导航到一个URL
view.setUrl(QUrl("https://www.example.com"))

# 返回上一页
view.page().history().back()

2. forward()
该函数用于前进到下一页。它会将当前页面导航到浏览历史记录中的后一个页面。

from PyQt5.QtWebEngineWidgets import QWebEngineView

# 创建WebEngine视图
view = QWebEngineView()

# 导航到一个URL
view.setUrl(QUrl("https://www.example.com"))

# 前进到下一页
view.page().history().forward()

3. canGoBack()
该函数用于检查是否可以返回上一页。如果浏览历史记录中有前一个页面可供导航,返回True;否则返回False

from PyQt5.QtWebEngineWidgets import QWebEngineView

# 创建WebEngine视图
view = QWebEngineView()

# 导航到一个URL
view.setUrl(QUrl("https://www.example.com"))

# 检查是否可以返回上一页
if view.page().history().canGoBack():
    print("可以返回上一页")
else:
    print("无法返回上一页")

4. canGoForward()
该函数用于检查是否可以前进到下一页。如果浏览历史记录中有后一个页面可供导航,返回True;否则返回False

from PyQt5.QtWebEngineWidgets import QWebEngineView

# 创建WebEngine视图
view = QWebEngineView()

# 导航到一个URL
view.setUrl(QUrl("https://www.example.com"))

# 检查是否可以前进到下一页
if view.page().history().canGoForward():
    print("可以前进到下一页")
else:
    print("无法前进到下一页")

5. clear()
该函数用于清除浏览历史记录,将其重置为空。

from PyQt5.QtWebEngineWidgets import QWebEngineView

# 创建WebEngine视图
view = QWebEngineView()

# 导航到一个URL
view.setUrl(QUrl("https://www.example.com"))

# 清除浏览历史记录
view.page().history().clear()

类似的,下面是使用C++的Qt中QWebEngineHistory类的一些常用函数的使用案例和详细介绍:

1. back()
该函数用于返回上一页。它会将当前页面导航到浏览历史记录中的前一个页面。

#include <QWebEngineView>
#include <QWebEngineHistory>

// 创建WebEngine视图
QWebEngineView* view = new QWebEngineView();

// 导航到一个URL
view->setUrl(QUrl("https://www.example.com"));

// 返回上一页
view->page()->history()->back();

2. forward()
该函数用于前进到下一页。它会将当前页面导航到浏览历史记录中的后一个页面。

#include <QWebEngineView>
#include <QWebEngineHistory>

// 创建WebEngine视图
QWebEngineView* view = new QWebEngineView();

// 导航到一个URL
view->setUrl(QUrl("https://www.example.com"));

// 前进到下一页
view->page()->history()->forward();

3. canGoBack()
该函数用于检查是否可以返回上一页。如果浏览历史记录中有前一个页面可供导航,返回true;否则返回false

#include <QWebEngineView>
#include <QWebEngineHistory>

// 创建WebEngine视图
QWebEngineView* view = new QWebEngineView();

// 导航到一个URL
view->setUrl(QUrl("https://www.example.com"));

// 检查是否可以返回上一页
if (view->page()->history()->canGoBack()) {
    qDebug() << "可以返回上一页";
} else {
    qDebug() << "无法返回上一页";
}

4. canGoForward()
该函数用于检查是否可以前进到下一页。如果浏览历史记录中有后一个页面可供导航,返回true;否则返回false

#include <QWebEngineView>
#include <QWebEngineHistory>

// 创建WebEngine视图
QWebEngineView* view = new QWebEngineView();

// 导航到一个URL
view->setUrl(QUrl("https://www.example.com"));

// 检查是否可以前进到下一页
if (view->page()->history()->canGoForward()) {
    qDebug() << "可以前进到下一页";
} else {
    qDebug() << "无法前进到下一页";
}

5. clear()
该函数用于清除浏览历史记录,将其重置为空。

#include <QWebEngineView>
#include <QWebEngineHistory>

// 创建WebEngine视图
QWebEngineView* view = new QWebEngineView();

// 导航到一个URL
view->setUrl(QUrl("https://www.example.com"));

// 清除浏览历史记录
view->page()->history()->clear();

这些是使用C++的Qt中QWebEngineHistory类的一些常用函数的使用案例和介绍。

这些是QWebEngineHistory中一些常用函数的使用案例和介绍。

以下是一个简单的实现示例:

#include <QtWidgets/QApplication>
#include <QtWebEngineWidgets/QWebEngineView>
#include <QtWebEngineWidgets/QWebEngineHistory>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QWebEngineView view;
    view.show();

    QWebEnginePage* page = view.page();
    QWebEngineHistory* history = page->history();

    view.load(QUrl("http://www.example.com"));
    history->back();
    history->forward();

    return app.exec();
}

在上面的代码中,我们首先创建了一个QWebEngineView对象,并使用show()函数显示它。然后,我们使用QWebEngineView::page()函数获取QWebEnginePage对象,并使用QWebEnginePage::history()函数获取QWebEngineHistory对象。

最后,我们使用load()函数加载Web页面,并使用back()函数和forward()函数在Web浏览历史中后退和前进。

猜你喜欢

转载自blog.csdn.net/feng1790291543/article/details/131805267