2

对即将进行的项目使用 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 未来会出现问题。

4

1 回答 1

3

但是,如果您编写的应用程序的前端包含 QML,并且 QML 未涵盖的任何内容都包含 C++,那么它可以在 Android 上运行吗?或者你需要用java重写C++部分吗?

这真的取决于。您可能需要通过 Android 平台不为某些功能提供直接和公共 API 的 Java 接口。一个例子是低级 IO 操作,例如为 USB 串行设备编写串行端口,但还有更多。

一般来说,Qt模块和基于Qt的第三方软件都是使用Qt 5.2中引入的QAndroidExtras插件模块。这将允许轻松地将后端集成到您的 C++ 逻辑中。

考虑到这一点,您可以在后台隐藏 Java 实现细节,同时仍然维护 QML 的 C++ 接口。因此,它应该以这种方式工作。

请参阅以下文档以掌握它:

Qt Android 附加功能

在这里你可以找到其中一个很好的例子:

Qt Notifier - 演示从 Android 应用程序调用 Java 代码。

于 2014-04-24T03:47:59.307 回答