鱼弦: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浏览历史中后退和前进。