c++ - 从 C++ 访问 QML web view

  显示原文与译文双语对照的内容

我有一个qml文件,里面有一个web视图。 我在 C++ 中得到了这个对象的引用,但是QObject*可以转换为类似于QWebView的东西,我可以得到QWebPage对象等等。 qobject_cast <> 如果尝试使用 QWebView,则返回 NULL 。 它与QQuickItem一起工作,但这对我并没有什么帮助。

谢谢

时间: 作者:

不能。QML web view元素没有 public C++ API 。

你有两种解决这里问题的方法:

  1. 使用 private API首先,将它的添加到. pro file:

QT += quick quick-private webkit-private

然后包括 private 标头:


#include <private/qquickwebview_p.h>

既然你得到了指向它的指针( 例如通过使用 QObject::findChildren 或者通过从QML传递QObject*到 C++ ),就可以访问web视图。 在这里,我只是假设 web view是 root 对象,为了简单起见:


QQuickWebView * webView = dynamic_cast<QQuickWebView*>(viewer.rootObject());
qDebug() <<webView->url();

  1. 使用通用 QObject API访问 web view的属性:

    ;/;qDebug() <<webView-> 属性("url") 。

...