QWebEngineView Открыть во внешнем браузере

Я нахожусь в процессе перемещения моего кода из QtWebKit в QtWebEngine. В целом, переход прошел довольно гладко, однако я застрял в одном конкретном вопросе. Я использую QWebEngineView для отображения страницы Google Maps. Некоторые из размещенных маркеров имеют всплывающие окна с надписью «Нажмите здесь для получения дополнительной информации», которая открывает ссылку во внешнем браузере.

Используя QtWebKit, это было довольно легко с помощью политики setLinkDelegation. Тем не менее, здесь это выглядит немного сложнее. Я пытался следовать примеру, но каким-то образом мне нужно переопределить QWebEnginePage в QWebEngineView. Ниже то, что я придумал до сих пор. Любая идея, как я могу соединить все это?

Спасибо

#ifndef MYQWEBENGINEVIEW_H
#define MYQWEBENGINEVIEW_H

#include <QWebEngineView>
#include <QDesktopServices>

class MyQWebEnginePage : public QWebEnginePage
{
Q_OBJECT

public:
MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent){}

bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool isMainFrame)
{
qDebug() << "acceptNavigationRequest("<<url << "," << type << "," << isMainFrame<<")";

if (type == QWebEnginePage::NavigationTypeLinkClicked)
{
QDesktopServices::openUrl(url);
return false;
}
return true;
}
};class MyQWebEngineView : public QWebEngineView
{
Q_OBJECT
public:
MyQWebEngineView(QWidget* parent = 0);
MyQWebEnginePage* page() const;

};

#endif // MYQWEBENGINEVIEW_H

4

Решение

Вам не нужна вторая часть. Попробуй это:

QWebEngineView *view = new QWebEngineView();
MyQWebEnginePage *page = new MyQWebEnginePage();
view->setPage(page);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]