2016-09-21 4 views
0

Я разрабатываю настольное приложение Qt, которое взаимодействует с устройством Bluetooth. Интерфейс этого приложения должен быть разработан в QML.QML application vs QML/C++ application

Это приложение должно содержать 2 модулей:

  1. Передний конец модуля: пользовательский интерфейс, который будет разработан в QML.
  2. Модуль задней панели: взаимодействие и управление устройством Bluetooth.

В рамках Qt содержит реализацию Bluetooth в QML (BluetoothDiscoveryModel, BluetoothSocket и BluetoothService) и C++ (QBluetooth ...), мне было интересно, что я выбираю между QML и C++ для реализации заднего конца модуля , в терминах:

  • Производительность.
  • Архитектура приложения.

И безопасно ли комбинировать QML и C++?

ответ

0

QML быстрее для прототипирования. Эмпирическое правило, если это возможно, делает его в QML, тогда, если у вас есть проблемы с производительностью, портируйте функциональность на C++.

Поскольку у Bluetooth довольно низкая пропускная способность и потребность в оборудовании, вы можете уйти от этого в QML.

Две вещи, которые могут мандат с использованием C++:

  • если задача требует более сложного синтаксического анализа
  • в документации говорится, «Если чрезмерное количество данных пересылаются, функция может блокировать передачу.»
+0

Я лично не буду использовать производительность в качестве основного решения, с какой стороны реализовать вещи, но надежность и проверяемость. Инструменты для анализа статического кода и т. Д. Гораздо более зрелые для C++ и т. Д. Даже не упоминание о JavaScript, требующем покрытия в 100% филиалов, чтобы быть уверенным, что нет синтаксических ошибок. –

+0

Моя основная проблема с QML - это не производительность, а использование памяти, это свиньи, поэтому я обычно заканчиваю консолидацию довольно больших файлов QML в один тип C++. Но самой важной метрикой IMO является время разработки, и в этом аспекте QML - потрясающая экономия, это единственная причина, по которой я ее использую. Я перешел с 95% C + + 95% использования QML в производство, и он развивается не только быстрее, но и быстрее выявлять ошибки, поскольку вместо жестких сбоев вы получаете «что-то пошло не так на этой линии», что намного лучше чем ручная отладка. – dtech

+0

Правильно, если один остается в QML и использует декларативные функции, это нормально, проблема, о которой я указывала, делает фактическую обработку. Лишь очень немногие люди берут на себя ответственность за строгую тестовую разработку, необходимую для того, чтобы функции JavaScript работали и поддерживались. Даже привязки могут быть сложными в этом отношении, поскольку они в основном также являются функциями JS, и опечатки не всегда приводят к предупреждениям –