从C++中访问QML WebView

3

我有一个qml文件,其中有一个webview组件。 我在C++中获取了该对象的引用,但它是QObject*类型。 我能将其转换为类似于QWebView的东西吗?从而可以获取QWebPage对象等? 如果我尝试使用QWebView,qobject_cast<>返回NULL。 使用QQuickItem强制转换可以工作,但并没有真正帮上我的忙。

谢谢

1个回答

4

很抱歉,您不能。 QML WebView元素没有公共的C++ API。您有两种解决方法:

  1. 使用私有API。首先,在.pro文件中添加以下内容:
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();
  1. 使用通用的 QObject API 来访问 WebView 的属性:
QObject * webView = viewer.rootObject();
qDebug() << webView->property("url");

1
为了让WebEngineView正常工作,我添加了这些内容:webengine、webengine-private、webenginecore和webenginecore-private。 - MoreMag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接