Qt QML 打包终极指南:从“无法运行”到完美部署(附避坑全流程)

Qt QML打包避坑全流程

此问题是 将 QML项目 打包成可执行文件的时候出现的,现在已解决,下面复盘一下问题。

1.代码目录

2.main.cpp 代码

#include <QGuiApplication>
#include <QQmlApplicationEngine>
​
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
​
    QQmlApplicationEngine engine;
    QObject::connect(
        &engine,
        &QQmlApplicationEngine::objectCreationFailed,
        &app,
        []() { QCoreApplication::exit(-1); },
        Qt::QueuedConnection);
    engine.loadFromModule("HelloTestApp", "Main");
​
    return app.exec();
}

3.Main.qml 代码

import QtQuick
​
Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
}

4.在Qt Creator 16.0.1 (Community)运行 hello 程序

效果图如下所示:

5.点击项目,查看构建的目录

通过查看,知道 构建目录为:D:\C++-Projects\HelloTestApp\build\Desktop_Qt_6_9_0_MinGW_64_bit-Release

6.进入构建目录,复制exe程序

7.在某个盘新建一个文件夹,将复制的exe程序粘贴到新建的文件夹

现在,我们点击这个exe程序,还不能运行,缺少一些qt组件,报错截图如下所示:

所以,我们需要使用 qt 自带的工具 进行打包。

8.使用qt工具进行打包

win+x,打开 快捷菜单,如下图所示:

点击 搜索,输入 qt,截图如下所示:

这里简单说一下,MinGW 和 MSVC的区别:

MinGW(Minimalist GNU for Windows)和 MSVC(Microsoft Visual C++)是 Windows 平台上两种主流的 C/C++ 编译器工具链,具体区别如下:

特性MINGWMSVC
编译器GCC(开源)微软私有编译器
运行时库libstdc++(GNU 标准库)MSVCRT(微软运行时)
部署依赖自带运行时 DLL(绿色分发)需用户安装 VC++ Redist 运行库
跨平台✅ 代码兼容 Linux/macOS❌ 仅限 Windows
性能优化中等(通用优化)⭐ 针对 Windows 深度优化(更快)
开发工具Qt Creator / VSCode⭐ Visual Studio(调试强大)
Qt 官方建议✅ 支持(开源友好)⭐ 首选(性能最佳)

💡 怎么选?

选 MinGW 如果

需要免安装直接运行(复制 DLL 即可)

开发跨平台应用(一套代码编译多系统)

项目必须 100% 开源(避免许可证问题)

选 MSVC 如果

追求最高性能(尤其大型项目)

需用 Visual Studio 高级调试工具

依赖仅支持 MSVC 的第三方库(如某些 SDK)

特别注意:

具体要使用哪种编译器工具链,取决于QT项目用的是 MinGW,还是 MSVC。像我这个项目,在Qt Creator 16.0.1 (Community)上编译用的是 MinGW,所以,我使用的也是MinGW来进行打包。

一般的打包命令,windeployqt 项目目录\xxx.exe,

我这里的打包命令:windeployqt D:\HelloTestApp\appHelloTestApp.exe

效果图如下所示:

ok,打包完成!!

9.找到问题的根源,问题解决

因为我们的项目是QML项目,也就是Qt Quick 程序(含 .qml文件),需要 QML 引擎 和 Qt Quick 模块 才能运行

重新使用下面的命令进行打包:

windeployqt D:\HelloTestApp\appHelloTestApp.exe --qmldir D:\C++-Projects\HelloTestApp

windeployqt                     # Qt 官方部署工具
D:\HelloTestApp\appHelloTestApp.exe  # 目标可执行文件路径
--qmldir                        # 关键参数:指定 QML 文件目录
D:\C++-Projects\HelloTestApp    # QML 文件所在的项目源码目录(Main.qml所在的目录)

双击exe程序,能成功运行了!!,效果图如下所示:

至此,QML项目成功打包并成功运行了!!

10.总结

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值