3

我有一个带有 webview 的 qml 文件。我在 C++ 中获得了对该对象的引用,但是 QObject* 我可以将它转换为类似于 QWebView 的东西,我可以从中获得 QWebPage 对象等等吗?如果我尝试 QWebView,qobject_cast<> 返回 NULL。它适用于转换为 QQuickItem 但这对我没有多大帮助。

谢谢

4

1 回答 1

3

你不能。QML WebView 元素没有公共 C++ API。您有两种方法可以解决此问题:

  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. 使用通用QObjectAPI 访问 WebView 的属性:
QObject * webView = viewer.rootObject();
qDebug() << webView->property("url");
于 2014-01-19T10:25:18.263 回答