如何使用QML

时间:2015-09-18 08:34:17

标签: android webview qml qt5 qwebkit

我想在iOS和Android上使用Qt 5.5开发和发布Qt / QML应用程序,我试图想出一种在我的QML中显示简单Web内容(如Facebook登录页面)的方法应用

我发现真正令人困惑的是,有多个类具有相似的名称但不适用于所有平台或缺少某些必需的功能。

以下是我发现的选项:

选项1: WebView (QtWebView 1.0)

http://doc.qt.io/qt-5/qml-qtwebengine-webengineview.html

优点:

  • 适用于iOS
  • 适用于Mac OS X

缺点:

  • 无法将其用于社交登录,因为我们缺少“将要加载的URL”信号,我们可以使用该信号来捕获成功的登录/错误。

选项2: WebView (QtWebKit 3.0)

http://doc.qt.io/qt-5/qml-qtwebkit-webview.html

优点:

  • 显然具有捕获社交登录(onNavigationRequested(request)
  • 所需的功能
  • 适用于OS X

缺点:

  • 在iOS上不起作用。在尝试为iOS模拟器构建时,我得到:
  

QQmlApplicationEngine无法加载组件   未安装http://badkitteh.local:8888/backend/:6模块“QtWebKit”

我尝试将webkitwebkitwidgets添加到.pro文件但未成功。 (WTF?)

选项3: WebEngineView (QtWebEngine 1.0)

http://doc.qt.io/qt-5/qml-qtwebengine-webengineview.html

优点:

  • 适用于OS X.
  • 显然有必要的方法来捕获社交登录/错误(loadingChanged(loadRequest))。

缺点:

  • 需要在main()中调用QtWebEngine::initialize()
  • 要求我在.pro文件中手动将webengine添加到QT。这使得它在OS X上构建/启动但仍然不在iOS上。跆拳道?
  • 在iOS上不起作用:
  

QQmlApplicationEngine无法加载组件   未安装http://badkitteh.local:8888/backend/:6模块“QtWebEngine”

我还没有测试Android,但似乎QtWebView是唯一适用于多个平台而不必使用单独的QML文件的东西。不幸的是,无法捕获URL更改/加载请求。

这令人沮丧。

如何在不使用外部库/工具等的情况下,在iOS和Android的应用内使用基于WebView的简单社交登录?要么我在这里遗漏了一些东西,要么WebView的情况现在真的搞砸了QML / Qt。为什么有这么多选择?为什么iOS上没有UIWebView的简单包装器和Android上的等效包装器?

0 个答案:

没有答案