|
|
|
#include "cwebengineview.h"
|
|
|
|
|
|
|
|
#include "CWebEngineView.h"
|
|
|
|
#include <QWidget>
|
|
|
|
|
|
|
|
CWebEngineView::CWebEngineView(QWidget *parent) : QWebEngineView(parent) {
|
|
|
|
// 记录首页URL
|
|
|
|
connect(
|
|
|
|
this, &QWebEngineView::loadFinished, this,
|
|
|
|
[&](bool ok) {
|
|
|
|
if (ok) {
|
|
|
|
firstURL = page()->url();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
Qt::SingleShotConnection);
|
|
|
|
// 获取当前页面的profile
|
|
|
|
QWebEngineProfile *profile = page()->profile();
|
|
|
|
|
|
|
|
// 启用缓存
|
|
|
|
profile->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
|
|
|
|
profile->setPersistentCookiesPolicy(
|
|
|
|
QWebEngineProfile::ForcePersistentCookies);
|
|
|
|
|
|
|
|
// 获取设置对象
|
|
|
|
QWebEngineSettings *settings = page()->settings();
|
|
|
|
|
|
|
|
// 启用硬件加速
|
|
|
|
settings->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, true);
|
|
|
|
settings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
|
|
|
|
|
|
|
|
// 其他设置
|
|
|
|
settings->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
|
|
|
|
settings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
|
|
|
|
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls,
|
|
|
|
true);
|
|
|
|
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls,
|
|
|
|
true);
|
|
|
|
}
|
|
|
|
|
|
|
|
CWebEngineView::~CWebEngineView() {
|
|
|
|
QWebEnginePage *page = this->page();
|
|
|
|
if (page != nullptr) {
|
|
|
|
delete page;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QWebEngineView *
|
|
|
|
CWebEngineView::createWindow(QWebEnginePage::WebWindowType type) {
|
|
|
|
if (type == QWebEnginePage::WebBrowserTab) {
|
|
|
|
QWebEnginePage *new_page =
|
|
|
|
new QWebEnginePage(this->page()->profile(), this);
|
|
|
|
this->setPage(new_page);
|
|
|
|
connect(new_page, &QWebEnginePage::destroyed, new_page,
|
|
|
|
[new_page]() { new_page->deleteLater(); });
|
|
|
|
// connect(page(), &QWebEnginePage::urlChanged, this, [&](const QUrl &url) {
|
|
|
|
// qDebug() << "**********GoTo URL:" << url.toString();
|
|
|
|
// });
|
|
|
|
}
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CWebEngineView::contextMenuEvent(QContextMenuEvent *event) {
|
|
|
|
// 创建一个新的菜单
|
|
|
|
QMenu menu(this);
|
|
|
|
menu.setStyleSheet(
|
|
|
|
"QMenu{background-color: white;color: black;}QMenu::item:selected "
|
|
|
|
"{background-color: lightgray;color: black;}");
|
|
|
|
// 添加自定义菜单项
|
|
|
|
QAction *forwardAction = menu.addAction("前进");
|
|
|
|
QAction *backAction = menu.addAction("后退");
|
|
|
|
QAction *reloadAction = menu.addAction("刷新");
|
|
|
|
// 显示菜单
|
|
|
|
QAction *action = menu.exec(event->globalPos());
|
|
|
|
if (action) {
|
|
|
|
QWebEnginePage *page = this->page();
|
|
|
|
if (action == forwardAction) {
|
|
|
|
if (page->history()->canGoForward()) {
|
|
|
|
page->triggerAction(QWebEnginePage::Forward);
|
|
|
|
}
|
|
|
|
} else if (action == backAction) {
|
|
|
|
if (page->history()->canGoBack()) {
|
|
|
|
page->triggerAction(QWebEnginePage::Back);
|
|
|
|
} else if (page->url() == page->history()->items()[0].url()) {
|
|
|
|
page->load(firstURL);
|
|
|
|
}
|
|
|
|
// qDebug() << "**********History URL:"
|
|
|
|
// << this->page()->history()->items()[0].url().toString();
|
|
|
|
} else if (action == reloadAction) {
|
|
|
|
page->triggerAction(QWebEnginePage::Reload);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|