fix: 修复 UOS 编译兼容性问题

网页通知获取依赖 QWebEngineNotification 类,在 Qt 5.13 引入

Log: 添加宏定义,判断 Qt 版本 >= 5.13 启用网页通知功能
This commit is contained in:
zty199 2022-12-19 09:40:48 +08:00
parent faa613d671
commit 6b8b31ebf6
2 changed files with 8 additions and 0 deletions

@ -21,9 +21,11 @@ WebEngineView::WebEngineView(QWidget *parent)
// page()->setUrlRequestInterceptor(interceptor); // page()->setUrlRequestInterceptor(interceptor);
// page()->settings()->setAttribute(QWebEngineSettings::WebAttribute::LocalContentCanAccessRemoteUrls, true); // page()->settings()->setAttribute(QWebEngineSettings::WebAttribute::LocalContentCanAccessRemoteUrls, true);
page()->profile()->setHttpAcceptLanguage(QLocale::system().name()); page()->profile()->setHttpAcceptLanguage(QLocale::system().name());
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
page()->profile()->setNotificationPresenter([&](std::unique_ptr<QWebEngineNotification> notification) { page()->profile()->setNotificationPresenter([&](std::unique_ptr<QWebEngineNotification> notification) {
WebEngineView::present(notification); WebEngineView::present(notification);
}); });
#endif
}); });
} }
@ -59,6 +61,7 @@ void WebEngineView::handleChromiumFlags()
qDebug() << Q_FUNC_INFO << "QTWEBENGINE_CHROMIUM_FLAGS=" + qgetenv("QTWEBENGINE_CHROMIUM_FLAGS"); qDebug() << Q_FUNC_INFO << "QTWEBENGINE_CHROMIUM_FLAGS=" + qgetenv("QTWEBENGINE_CHROMIUM_FLAGS");
} }
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
void WebEngineView::present(std::unique_ptr<QWebEngineNotification> &newNotification) void WebEngineView::present(std::unique_ptr<QWebEngineNotification> &newNotification)
{ {
qDebug() << Q_FUNC_INFO << "New notification received:" << newNotification->title() << newNotification->message(); qDebug() << Q_FUNC_INFO << "New notification received:" << newNotification->title() << newNotification->message();
@ -93,3 +96,4 @@ void WebEngineView::present(std::unique_ptr<QWebEngineNotification> &newNotifica
.hints(hints) .hints(hints)
.call(); .call();
} }
#endif

@ -2,7 +2,9 @@
#define WEBENGINEVIEW_H #define WEBENGINEVIEW_H
#include <QWebEngineView> #include <QWebEngineView>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
#include <QWebEngineNotification> #include <QWebEngineNotification>
#endif
// class WebEngineUrlRequestInterceptor; // class WebEngineUrlRequestInterceptor;
class WebEngineView : public QWebEngineView class WebEngineView : public QWebEngineView
@ -13,7 +15,9 @@ public:
explicit WebEngineView(QWidget *parent = nullptr); explicit WebEngineView(QWidget *parent = nullptr);
static void handleChromiumFlags(); static void handleChromiumFlags();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
static void present(std::unique_ptr<QWebEngineNotification> &newNotification); static void present(std::unique_ptr<QWebEngineNotification> &newNotification);
#endif
private: private:
// WebEngineUrlRequestInterceptor *interceptor = nullptr; // WebEngineUrlRequestInterceptor *interceptor = nullptr;