我有一个带有 webview 的 qml 文件。我在 C++ 中获得了对该对象的引用,但是 QObject* 我可以将它转换为类似于 QWebView 的东西,我可以从中获得 QWebPage 对象等等吗?如果我尝试 QWebView,qobject_cast<> 返回 NULL。它适用于转换为 QQuickItem 但这对我没有多大帮助。
谢谢
你不能。QML WebView 元素没有公共 C++ API。您有两种方法可以解决此问题:
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();
QObject
API 访问 WebView 的属性:QObject * webView = viewer.rootObject();
qDebug() << webView->property("url");