2016-09-21 45 views
0

我正在开发与蓝牙设备交互的Qt桌面应用程序。这个应用程序的界面应该在QML中开发。QML应用程序与QML/C++应用程序

本申请应该包含2个模块:

  1. 前端模块:将在QML开发UI。
  2. 后端模块:蓝牙设备的交互和控制。

由于Qt框架包含了蓝牙技术在QML(BluetoothDiscoveryModelBluetoothSocketBluetoothService)和C++(QBluetooth ...)的实现,我想知道我该怎么QML和C++之间选择,以实现后端模块,在:

  • 表现。
  • 应用程序的体系结构。

将QML和C++结合起来是否安全?

回答

0

QML原型设计速度更快。经验法则是,如果可能的话,使用QML进行编译,如果存在性能问题,请将功能移植到C++。

由于蓝牙的带宽和硬件需求相当低,您可能会在QML中做到这一点。这可能要求用C++

两件事情:

  • 如果数据需要更复杂的解析
  • 作为文档指出“如果过多的数据被发送,则该函数可以阻断发送”。
+0

我个人不会将性能作为主要决定在哪一方实施,但是可靠性和可测试性。用于静态代码分析等的工具对于C++等来说更加成熟,甚至不需要为了确保没有语法错误而要求100%分支覆盖率的JavaScript。 –

+0

我对QML的主要问题不是性能,而是内存使用情况,因为它很笨拙,所以我通常最终会将相当大的QML文件整合到一个C++类型中。但IMO最重要的指标是开发时间,在这方面QML是一个巨大的节省,这是我使用它的唯一原因。我在生产中从95%的C++使用到95%的QML使用率,不仅开发速度更快,而且查明错误的速度也更快,因为不是硬碰撞,而是“出现了这一问题”,这更好比手动调试。 – dtech

+0

没错,只要一个人留在QML中并使用声明性功能就没问题,我指出的问题是进行实际处理。只有极少数人致力于严格的测试驱动开发,以保持JavaScript功能的正常运行和可维护性。 即使绑定在这方面可能很困难,因为它们基本上也是JS的功能,并且拼写错误并不总是会导致警告 –