2016-09-21 72 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的功能,並且拼寫錯誤並不總是會導致警告 –