From 2f38b9dd7625b700742b72fdfbb99122667ae4d4 Mon Sep 17 00:00:00 2001 From: ut003880 <zhangtianyi@uniontech.com> Date: Thu, 22 Jul 2021 12:44:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对于网页打开方式为新窗口打开的网页进行修复 --- spark-webapp-runtime/mainwindow.cpp | 2 +- spark-webapp-runtime/spark-webapp-runtime.pro | 20 ++++++++-------- spark-webapp-runtime/webenginepage.cpp | 20 ---------------- spark-webapp-runtime/webenginepage.h | 21 ----------------- spark-webapp-runtime/webengineview.cpp | 23 +++++++++++++++++++ spark-webapp-runtime/webengineview.h | 21 +++++++++++++++++ spark-webapp-runtime/widget.cpp | 4 ++-- spark-webapp-runtime/widget.h | 5 ++-- 8 files changed, 60 insertions(+), 56 deletions(-) delete mode 100644 spark-webapp-runtime/webenginepage.cpp delete mode 100644 spark-webapp-runtime/webenginepage.h create mode 100644 spark-webapp-runtime/webengineview.cpp create mode 100644 spark-webapp-runtime/webengineview.h diff --git a/spark-webapp-runtime/mainwindow.cpp b/spark-webapp-runtime/mainwindow.cpp index 0d5a97b..c2fea63 100644 --- a/spark-webapp-runtime/mainwindow.cpp +++ b/spark-webapp-runtime/mainwindow.cpp @@ -10,7 +10,7 @@ #include <QDir> #include <QCloseEvent> -#include "webenginepage.h" +#include "webengineview.h" MainWindow::MainWindow(QString szTitle, QString szUrl, diff --git a/spark-webapp-runtime/spark-webapp-runtime.pro b/spark-webapp-runtime/spark-webapp-runtime.pro index 7336ad4..a76bd94 100644 --- a/spark-webapp-runtime/spark-webapp-runtime.pro +++ b/spark-webapp-runtime/spark-webapp-runtime.pro @@ -1,4 +1,4 @@ -QT += core gui webengine webenginewidgets svg concurrent +QT += core gui webenginewidgets svg concurrent greaterThan(QT_MAJOR_VERSION, 5): QT += widgets @@ -9,20 +9,20 @@ DEFINES += QT_DEPRECATED_WARNINGS CONFIG += c++11 link_pkgconfig PKGCONFIG += dtkwidget -HEADERS += \ - mainwindow.h \ - globaldefine.h \ - httpd.h \ - httplib.h \ - webenginepage.h \ - widget.h +HEADERS += \ + mainwindow.h \ + globaldefine.h \ + httpd.h \ + httplib.h \ + widget.h \ + webengineview.h SOURCES += \ main.cpp \ httpd.cpp \ mainwindow.cpp \ - webenginepage.cpp \ - widget.cpp + widget.cpp \ + webengineview.cpp RESOURCES += \ imgs.qrc diff --git a/spark-webapp-runtime/webenginepage.cpp b/spark-webapp-runtime/webenginepage.cpp deleted file mode 100644 index 3e9e94a..0000000 --- a/spark-webapp-runtime/webenginepage.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "webenginepage.h" - -WebEnginePage::WebEnginePage(QObject *parent) - : QWebEnginePage(parent) -{ -} - -QWebEnginePage *WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) -{ - Q_UNUSED(type) - WebEnginePage *page = new WebEnginePage; - connect(page, &QWebEnginePage::urlChanged, this, &WebEnginePage::on_urlChanged); - return page; -} - -void WebEnginePage::on_urlChanged(const QUrl url) -{ - setUrl(url); - sender()->deleteLater(); -} diff --git a/spark-webapp-runtime/webenginepage.h b/spark-webapp-runtime/webenginepage.h deleted file mode 100644 index afa2d05..0000000 --- a/spark-webapp-runtime/webenginepage.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef WEBENGINEPAGE_H -#define WEBENGINEPAGE_H - -#include <QWebEnginePage> -#include <QWebEngineProfile> -#include <QObject> - -class WebEnginePage : public QWebEnginePage -{ -public: - WebEnginePage(QObject *parent = nullptr); - -protected: - QWebEnginePage *createWindow(WebWindowType type) override; - -private slots: - void on_urlChanged(const QUrl url); - -}; - -#endif // WEBENGINEPAGE_H diff --git a/spark-webapp-runtime/webengineview.cpp b/spark-webapp-runtime/webengineview.cpp new file mode 100644 index 0000000..b1e8cd5 --- /dev/null +++ b/spark-webapp-runtime/webengineview.cpp @@ -0,0 +1,23 @@ +#include "webengineview.h" + +WebEngineView::WebEngineView(QWidget *parent) + : QWebEngineView(parent) +{ + +} + +QWebEngineView *WebEngineView::createWindow(QWebEnginePage::WebWindowType type) +{ + Q_UNUSED(type) + + QWebEngineView *view = new QWebEngineView; + connect(view, &QWebEngineView::urlChanged, this, &WebEngineView::on_urlChanged); + + return view; +} + +void WebEngineView::on_urlChanged(QUrl url) +{ + setUrl(url); + sender()->deleteLater(); +} diff --git a/spark-webapp-runtime/webengineview.h b/spark-webapp-runtime/webengineview.h new file mode 100644 index 0000000..8102441 --- /dev/null +++ b/spark-webapp-runtime/webengineview.h @@ -0,0 +1,21 @@ +#ifndef WEBENGINEVIEW_H +#define WEBENGINEVIEW_H + +#include <QWebEngineView> + +class WebEngineView : public QWebEngineView +{ + Q_OBJECT + +public: + explicit WebEngineView(QWidget *parent = nullptr); + +protected: + QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) override; + +private slots: + void on_urlChanged(QUrl url); + +}; + +#endif // WEBENGINEVIEW_H diff --git a/spark-webapp-runtime/widget.cpp b/spark-webapp-runtime/widget.cpp index cf77e31..4c439a9 100644 --- a/spark-webapp-runtime/widget.cpp +++ b/spark-webapp-runtime/widget.cpp @@ -2,7 +2,7 @@ Widget::Widget(QString szUrl, QWidget *parent) : QWidget(parent) - , m_webEngineView(new QWebEngineView) + , m_webEngineView(new WebEngineView) , m_szUrl(szUrl) , m_spinner(new DSpinner) , main(new QHBoxLayout) @@ -16,7 +16,7 @@ Widget::Widget(QString szUrl, QWidget *parent) m_webEngineView->setAutoFillBackground(false); m_webEngineView->setZoomFactor(1); - WebEnginePage *page = new WebEnginePage; + QWebEnginePage *page = new QWebEnginePage; m_webEngineView->setPage(page); m_webEngineView->setUrl(QUrl(nullptr)); diff --git a/spark-webapp-runtime/widget.h b/spark-webapp-runtime/widget.h index ba41739..f50223e 100644 --- a/spark-webapp-runtime/widget.h +++ b/spark-webapp-runtime/widget.h @@ -2,12 +2,13 @@ #define WIDGET_H #include <QWidget> +#include <QWebEngineProfile> #include <QWebEngineView> #include <QLayout> #include <DSpinner> -#include "webenginepage.h" +#include "webengineview.h" DWIDGET_USE_NAMESPACE @@ -25,7 +26,7 @@ public: void refresh(); private: - QWebEngineView *m_webEngineView; + WebEngineView *m_webEngineView; QString m_szUrl; DSpinner *m_spinner;