根本原因是Qt Creator找不到有效套件(Kit),即Qt版本、编译器与调试器未正确组合;常见表现为“Cannot run 'qmake'”或“No compiler specified”,本质是安装遗漏、PATH未配置或Kit绑定错误。

Qt Creator 不是装完就能直接写代码跑起来的 IDE,它依赖 Qt 库、编译器和项目配置三者协同。很多新手卡在“新建项目后点运行,报错找不到 qmake 或 mingw_64”,根本原因不是软件没装好,而是工具链没对上。
为什么新建 Qt Widgets 项目后无法构建?
常见错误信息:Cannot run 'qmake': No such file or directory 或 The kit is not valid: No compiler specified。
这不是 Qt Creator 本身的问题,而是它找不到可用的“套件(Kit)”——即 Qt 版本 + 编译器 + 调试器的组合。
- 安装时若只勾选了
Qt Creator,但没选具体 Qt 版本(如Qt 5.15.2 MinGW 8.1 64-bit),qmake就不会被装到磁盘上 - 即使装了 Qt,如果系统 PATH 没包含其
bin目录(如C:\Qt\5.15.2\mingw81_64\bin),qmake命令仍不可见 - Windows 下用 MSVC 编译器时,必须先安装对应版本的 Visual Studio(如 VS 2019),否则 Qt Creator 无法识别
cl.exe - Linux/macOS 用户容易忽略
libgl1-mesa-dev(Ubuntu)或 Xcode command line tools(macOS)这类底层依赖,导致qmake可运行但链接失败
双击 .ui 文件进不去设计模式?
现象:打开 mainwindow.ui,编辑区显示 XML 内容而非拖拽界面;或提示 “No Qt Designer available”。
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
- Qt Designer 不是独立进程,它是 Qt Creator 内置功能,但需要当前 Kit 的 Qt 版本支持 UI 编辑 —— 如果 Kit 中 Qt 版本为
Qt for WebAssembly或Qt Quick Compiler Only,设计模式会被禁用 - 检查
Tools → Options → Build & Run → Kits,确认所选 Kit 的Qt version显示为有效路径(如C:\Qt\5.15.2\mingw81_64),且右侧Designer列显示绿色对勾 - 某些企业版或精简版安装包会默认不装
Qt Designer组件,需重运行安装程序,手动勾选Qt Desktop Components或Qt Designer - macOS 上若用 Homebrew 安装 Qt,
designer可能单独存在,但 Qt Creator 不会自动识别 —— 此时需在Options → Build & Run → Qt Versions中手动添加qmake路径,并确保其所在目录下有bin/designer
信号槽连接写对了却没响应?
典型代码:connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::onButtonClicked);,但点击按钮毫无反应。
- 最常漏的是:类声明中没加
Q_OBJECT宏 —— 没它,moc(元对象编译器)不生成信号槽绑定代码,connect调用成功但实际无效 -
ui->setupUi(this)必须在构造函数里调用,且要在connect之前;否则ui->pushButton还是空指针 - 使用 lambda 槽函数时,捕获列表不能写成
[this]后又在槽里用this->xxx()—— 若对象提前析构,lambda 仍可能被执行,造成崩溃;建议用[this] { if (this) this->xxx(); }防御 - Qt 6 默认禁用自动连接(Auto Connection),必须显式指定连接类型;Qt 5 默认是
Qt::AutoConnection,但在跨线程场景下行为不稳定,推荐统一写成Qt::DirectConnection或Qt::QueuedConnection
发布 Windows 程序时缺 dll 怎么办?
双击生成的 .exe 提示 “缺少 Qt5Core.dll” 或 “无法定位程序输入点”。
-
windeployqt是官方部署工具,但它只扫描可执行文件的直接依赖 —— 如果你用了插件(如sqldrivers/qsqlite.dll)、自定义资源(.qrc)、或动态加载库(dlopen),它不会自动复制 - 运行
windeployqt --no-opengl-sw --no-compiler-runtime yourapp.exe,其中--no-compiler-runtime表示不打包 MinGW 的libgcc/libstdc++,需自行确保目标机已安装对应运行时 - SQLite 驱动默认不随 exe 发布:检查
yourapp.exe同级目录是否存在sqldrivers/子目录,以及里面是否有qsqlite.dll;没有就手动从C:\Qt\5.15.2\mingw81_64\plugins\sqldrivers\复制过去 - 图标、翻译文件(
.qm)、字体等资源,windeployqt一概不管,必须靠QDir::addSearchPath或QResource::registerResource显式管理路径
Projects → Build & Run → Kits 页签里的状态灯是否全绿。

















