qt — Доступ к QML WebView из переполнения стека

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

Спасибо

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");
2

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

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

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