Доступ к QML WebView из C++

У меня есть файл qml с веб-просмотром. Я получаю ссылку на этот объект в С++, но это QObject * Могу ли я привести его к чему-то похожему на QWebView, из которого я могу получить объект QWebPage и так далее? qobject_cast‹> возвращает NULL, если я пробую QWebView. Он работает с приведением к QQuickItem, но мне это не очень помогает.

Спасибо


person N0name    schedule 15.01.2014    source источник


Ответы (1)


Вы не можете. Элемент QML WebView не имеет общедоступного API C++. У вас есть два способа обойти это:

  1. Используйте частный API. Сначала добавьте это в файл .pro:
QT += quick quick-private webkit-private

Затем включите частные заголовки:

#include <private/qquickwebview_p.h>

Теперь вы можете получить доступ к WebView, если вы получите указатель на него (например, используя QObject::findChildren или передав QObject* из QML в C++. Здесь я просто предполагаю, что WebView является корневым объектом для простоты):

QQuickWebView * webView = dynamic_cast<QQuickWebView*>(viewer.rootObject());
qDebug() << webView->url();
  1. Используйте общий QObject API для доступа к свойствам WebView:
QObject * webView = viewer.rootObject();
qDebug() << webView->property("url");
person Thomas McGuire    schedule 19.01.2014
comment
для WebEngineView webengine webengine-private webenginecore webenginecore-private я добавил их для работы - person MoreMag; 19.06.2019