Я перехожу свой код из 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
void QWebEngineView::setPage(QWebEnginePage *page)
- person CapelliC   schedule 11.02.2016MyQWebEnginePage thisPage; ui->map->setPage(thisPage);
Однако это приводит к ошибке о неправильном типе. - person goalie39   schedule 11.02.2016auto thisPage = new MyQWebEnginePage
- person CapelliC   schedule 11.02.2016