首页 > 解决方案 > QtQuick 窗口部署

问题描述

我正在使用 Qt 5.12 和 QtQuickControls 2 创建一个 Qt QML 应用程序

当我在桌面上开发并在 android 设备上部署时,一切正常。

问题是当我想为桌面部署并使用带有 --qmldir 参数的 Qt windeploy 时,来自 QtQuick 模块的所有 QML 源文件都被复制到最终输出文件夹由于 QML 源的可用性没有安全性,我手动删除文件夹中的主题,但应用程序未运行。

我也试过把QtQuick模块的800~900个QML文件全部放到资源qrc文件中,结果还是一样。

如何从应用程序版本中省略 QtQuick 纯 QML 文件并将它们隐藏在用户面前?

提前致谢

标签: deploymentqmlqtquick2qtquickcontrols2

解决方案


经过整整3天的搜索、测试和编译,我达到了这个:

步骤 0:使用 Qt 资源文件将自己的 QML 文件放入其中

第 1 步:像往常一样使用动态链接编译应用程序

第 2 步:将最终输出的二进制文件复制到一个空文件夹中

第 3 步:windeploy.exe在文件上运行并使用--qmldir包含 QML 的文件夹的地址。这应该在正确的目录层次结构中添加所有插件(这是关键)

*.qml第 4 步:从 windeploy 创建的所有文件夹中删除所有 QML 文件 ( )。剩下的是*.dll, plugins.qmltypes, qmldir文件(这也是允许删除普通 QML 文件的其他键)

第 5 步(可选):您还可以将所有plugins.qmltypes.qmldir文件(纯文本文件,最终用户可以简单地编辑)放入 Qt 资源文件(但文件夹的层次结构必须在资源文件中保持相同)通过将主题剪切并粘贴到源文件夹的根目录并将它们添加到 qrc 文件中,然后在您的main函数中使用此代码:

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

注意:如果使用第 5 步,则在使用 QML 样式时可能会出现一些问题Default(如Univeral,...),但如果没有第 5 步,则所有样式都可以使用


推荐阅读