Каков наилучший подход при развертывании файлов qml во встроенном приложении?

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

Какой подход лучше всего подходит для развертывания файлов qml?

Добавляет ли он .qrc (в качестве ресурса) и компилирует ли он в исполняемое приложение?

или

Загрузить QML файлов из папки импорта (будут развернуты QML файлов)?

или любое другое предложение?

У меня около 200 файлов QML.


person Ashif    schedule 15.01.2016    source источник
comment
Я полагаю, что с 200 файлами qml лучше всего использовать файл ресурсов и скомпилировать его в одном приложении.   -  person Tarod    schedule 15.01.2016


Ответы (1)


Файлы QML в файловой системе

Files are stored without compression and encryption

  • Быстрее построить, но медленнее развернуть
  • Хранятся без сжатия, поэтому они занимают больше места для хранения
  • Легко вносить изменения в пользовательский интерфейс на лету (просто отредактируйте QML и перезапустите)

Файлы QML в файле ресурсов

Resources are compiled to the binary file making the executable file size bigger

  • Медленнее строить, но быстрее развертывать.
  • Занимает меньше места для хранения, поскольку ресурсы сжаты по умолчанию.
  • Поскольку размер исполняемого файла больше, программа требует больше памяти при запуске.
  • Вы не можете вносить изменения в пользовательский интерфейс без перекомпиляции

См. по ссылке следующую главу Управление файлами ресурсов с помощью системы ресурсов Qt для примера ссылки на относительный путь.

У меня нет твердого мнения, но вот некоторые из моих мыслей: если использование памяти является проблемой, вы можете обойтись без встроенных ресурсов и убедиться, что вы используете динамическую загрузку компонентов как можно больше. На этапе разработки проще обойтись без встроенных ресурсов. Если это клиентский проект, я бы сделал доставку клиенту в виде встроенных файлов qml. Это не позволяет клиенту самостоятельно настраивать код пользовательского интерфейса.

person talamaki    schedule 15.01.2016
comment
Хорошие моменты. Не могли бы вы отредактировать свой ответ, чтобы уточнить ссылку на проблему? Это немного расплывчато. - person Mitch; 15.01.2016
comment
Спасибо за обновление: Теперь я предпочитаю файлы QML в файле ресурсов, если он добавляет в исполняемый файл, то время запуска требует времени, поэтому я планирую вынести ресурсы в отдельную библиотеку. - person Ashif; 18.01.2016
comment
Ряд хороших моментов, но у меня есть некоторые сомнения в том, что требуется больше памяти, так как исполняемый файл больше. Например, в Linux я предполагаю, что qrc помещается в специальный раздел .elf, доступный только для чтения. Страницы для этого чистые, поэтому ядро ​​может просто удалить их, если ему нужна память. - person Frank Meerkötter; 18.01.2016
comment
@Mitch У меня нет веских доказательств, просто неудачный опыт работы с относительными путями из Qt 4. Итак, я заменил комментарий о проблемах со ссылками на ссылку на документацию и пример Qt 5. - person talamaki; 18.01.2016
comment
@Frank Мы говорим о файле .qrc, скомпилированном в двоичный файл или отдельный двоичный файл ресурсов, а не о самом файле .qrc. Компилятор ресурсов Qt, rcc, преобразует двоичные данные в файле ресурсов .qrc в массивы символов без знака в файле qrc_[somename].cpp, который затем компилируется в объектный файл компилятором C++. - person talamaki; 18.01.2016