对即将开展的项目使用QT / QML的可行性进行一些调查。客户最初希望在Windows和Mac台式机上使用它,iOS和Android可能会在未来发展。他们想知道我们建造的东西会相对容易地移动。我不是桌面程序员,但我看到的是QML旨在与C ++一起使用。因此,构建一个在Mac和Windows上运行的应用程序应该相对容易,iOS将接受C ++,因此我看不到很多障碍。但我对Android感到困惑。我看到人们谈论使用QML构建Android应用程序,但他们似乎仍在使用java;我收集它在后台使用NDK。
但是如果你编写一个前端有QML的应用程序,而且对于QML没有涵盖的任何内容的C ++,它可以在Android上运行吗?或者你需要在java中重写C ++片段吗?该应用程序不是一个简单的应用程序,所以我们将不得不提供一些QML之外的逻辑,至少,它确实看起来那样。虽然我们可以通过使用QT来节省时间和$$$而不必在台式机和iOS上使用本机,但我发现Android存在问题。
答案 0 :(得分:3)
但是如果你编写一个前端有QML的应用程序,而且对于QML没有涵盖的任何内容的C ++,它可以在Android上运行吗?或者你需要在java中重写C ++片段吗?
这取决于。您可能需要通过Java平台,其中Android平台不为某些功能提供直接和公共API。一个例子是低级IO操作,比如为usb-serial设备编写串口,但还有更多。
一般来说,基于Qt的Qt模块和第三方软件是使用Qt 5.2中引入的QAndroidExtras附加模块。这样可以轻松地将后端集成到C ++逻辑中。
考虑到这一点,您可以在后台保留C ++接口到QML时隐藏Java实现细节。因此,它应该就是这样。
请参阅以下文档以掌握它:
在这里你可以找到一个很好的例子:
Qt Notifier - Demonstrates calling Java code from an Android application.