我有一个qml文件,其中有一个webview组件。 我在C++中获取了该对象的引用,但它是QObject*类型。 我能将其转换为类似于QWebView的东西吗?从而可以获取QWebPage对象等? 如果我尝试使用QWebView,qobject_cast<>返回NULL。 使用QQuickItem强制转换可以工作,但并没有真正帮上我的忙。
谢谢
很抱歉,您不能。 QML WebView元素没有公共的C++ API。您有两种解决方法:
QT += quick quick-private webkit-private
然后包含私有头文件:
#include <private/qquickwebview_p.h>
只要获得指向它的指针(例如使用 QObject::findChildren
或者从 QML 传递 QObject*
到 C++ 中),就可以访问 WebView。这里为了简便起见,我们假设 WebView 是根对象:
QQuickWebView * webView = dynamic_cast<QQuickWebView*>(viewer.rootObject());
qDebug() << webView->url();
QObject
API 来访问 WebView 的属性:QObject * webView = viewer.rootObject();
qDebug() << webView->property("url");