Qt6 QML应用Windows无法运行的问题排查与解决
解决Qt6 QML应用Windows打包后QML组件加载失败问题
问题现象
- 基于Qt6 + QML开发的应用,使用CMake构建,通过
qt_generate_deploy_qml_app_script打包Windows DLL并生成NSIS安装包,构建过程无异常 - Windows运行安装后的应用时,先后出现以下错误:
- 提示
QtQuick.Controls模块不可用 - 移除该模块导入后,报错
MenuBar不是类型 - 多次启动还会出现
ApplicationWindow、Action不是类型的问题
- 提示
- 同一应用在Linux环境下可正常启动,查看Windows安装包文件夹,相关DLL已部署,但始终出现
QQmlApplicationEngine加载组件失败的错误
排查过程
进一步定位发现:
MenuBar、ApplicationWindow等QML类型实际依赖QtQuick.Controls模块- 导入模块时提示找不到
qtquickcontrols2plugin插件 - 项目中已链接
Qt6::QuickControls2库,但对应QML模块未被正确部署到安装包中
解决步骤
- 修改CMake脚本,将原有的
qt_generate_deploy_app_script替换为qt_generate_deploy_qml_app_script - 彻底删除原构建文件夹,重新创建构建目录并执行构建(避免旧缓存干扰)
- 确保CMake脚本中调用了
qt_finalize_target,保证QML模块的部署逻辑生效
完成以上操作后,重新打包生成安装包,Windows下运行应用即可正常加载所有QML组件。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

