You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt6 CMake开发QML时提示module "QtQuick.Controls"未安装如何解决

解决方案步骤

1. 修正CMakeLists.txt配置

你之前直接将QML文件放到qt_add_executable中的写法无法让Qt识别QML模块依赖,需要使用Qt6官方指定的qt_add_qml_module管理QML资源,配置示例如下:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick QuickControls2)

qt_add_executable(nameHere
    src/main.cpp
)

# 新增QML模块配置
qt_add_qml_module(nameHere
    URI myApp
    VERSION 1.0
    QML_FILES gui/main.qml
)

target_link_libraries(nameHere PRIVATE Qt6::Core Qt6::Gui Qt6::Quick Qt6::QuickControls2)

# 开启Windows下自动部署所有Qt依赖
if(WIN32)
    set_target_properties(nameHere PROPERTIES
        WIN32_EXECUTABLE TRUE
    )
    install(TARGETS nameHere
        BUNDLE DESTINATION .
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    )
    qt_generate_deploy_qml_app_script(
        TARGET nameHere
        OUTPUT_SCRIPT deploy_script
        NO_UNSUPPORTED_PLATFORM_ERROR
    )
    install(SCRIPT ${deploy_script})
endif()

2. 修正main.cpp的QML加载逻辑

QQuickView仅支持根元素为Item的QML文件,你用的ApplicationWindow属于窗口类型,需要用QQmlApplicationEngine加载:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char* argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    // 路径和上一步qt_add_qml_module的URI对应
    engine.load(QUrl("qrc:/myApp/gui/main.qml"));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

3. 执行install目标完成自动部署

在Visual Studio生成的解决方案中,找到CMakePredefinedTargets分组下的INSTALL项目,右键点击生成,所有依赖的Qt DLL、QML模块文件(含QtQuick.Controls所需的qmldir、风格子模块等)都会自动复制到build/install/bin目录下,直接运行该目录下的exe即可。

4. 手动调用windeployqt的正确方式

如果需要手动部署,必须指定QML文件所在目录才能让windeployqt识别QML依赖:

windeployqt.exe --qmldir 你的项目根目录/gui 你的exe完整路径

你之前手动复制Qt6QuickControls2.dll无效的原因是:QML模块不止包含动态库,还需要配套的qmldir描述文件、类型定义、风格组件等文件,仅复制DLL无法被QML引擎识别为有效模块。CMake之前仅复制基础Qt DLL是因为默认只处理C++链接层面的依赖,不会自动识别QML模块依赖,需要添加QML部署配置才会触发相关文件的复制。

内容的提问来源于stack exchange,提问作者Noah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:54:00