Развертывание окна QtQuick - PullRequest
0 голосов
/ 29 января 2019

Я создаю приложение Qt QML с использованием Qt 5.12 и QtQuickControls 2

Все работает нормально, когда я разрабатываю на рабочем столе и развертываю на устройстве Android.

Проблема в том, когда я хочуразвернуть для рабочего стола и использовать Qt windeploy с аргументом --qmldir, все исходные файлы QML из модуля QtQuick копируются в конечную выходную папку. Поскольку нет безопасности в доступности этих источников QML, я вручную удаляю тему из папки, но затемприложение не запускается.

Я также пытался поместить все 800 ~ 900 QML-файлов модуля QtQuick в файл ресурсов qrc, но результат был таким же.

Как я могу опустить простой QtQuickQML файлы из приложения выпускают и скрывают их от пользователя?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 31 января 2019

После поиска, тестирования и компиляции в течение полных 3 дней я пришел к следующему:

Шаг 0: Используйте файлы ресурсов Qt, чтобы поместить в него свои собственные файлы QML

Шаг 1:Как обычно, скомпилируйте приложение с динамической связью

Шаг 2: Скопируйте конечный двоичный файл в пустую папку

Шаг 3: Запустите windeploy.exe для файла и используйте --qmldir садрес папки, содержащей ваши QML.Это должно добавить все плагины в правильной иерархии каталогов (которая является ключом)

Шаг 4: Удалить все файлы QML (*.qml) из всех папок, созданных windeploy.Остальные файлы *.dll, plugins.qmltypes, qmldir (которые также являются другими ключами, позволяющими удалять простые файлы QML)

Шаг 5 (необязательно): Вы также можете поместить все plugins.qmltypes,Файлы qmldir (которые являются простыми текстовыми файлами и могут быть просто отредактированы конечным пользователем) в файл ресурсов Qt (но иерархия папок в файле ресурсов должна оставаться неизменной) путем вырезания и вставки темы в кореньисходной папки и добавив их в файл qrc, затем используйте этот код в вашей функции main:

engine.addImportPath(QStringLiteral("qrc:/"));

Примечание : если используется шаг 5, могут быть некоторыепроблема в использовании стилей QML, отличных от Default (например, Univeral, ...), но без шага 5 все стили можно использовать

0 голосов
/ 31 января 2019

Qt имеет несколько лицензий, теперь вы, вероятно, используете LGPLv3, который позволяет вам использовать Qt по своему усмотрению, но в качестве динамической библиотеки, поэтому вы должны хранить каталог dll и каталог Qt qml с вашим приложением.

То, что вы хотите сделать, должно быть статически добавлено в ваше приложение.Для этого вам нужно использовать коммерческую лицензию Qt.

Кроме того, использование Android означает, что вы используете apk, а затем не уважаете лицензию LGPLv3.Поэтому вы не можете продавать свое приложение или зарабатывать на нем деньги на Android.

...