答案是Kit配置错误导致widgets模块未识别。根本原因是构建套件(Kit)指向的Qt版本未安装widgets模块:Qt6默认不包含该模块,需在安装时显式勾选qtbase、qttools及qt5compat组件;Qt5虽默认含widgets,但若Kit误配为无widgets的MinGW版Qt,仍会报此错。

Qt Creator 不是学“怎么用 IDE”,而是学“怎么用它把 Qt 项目跑起来、调通、发出去”。入门卡点从来不是界面按钮在哪,而是构建套件配不配得上、qmake 和 CMakeLists.txt 混了、UI 文件改了但没触发 ui_*.h 生成——这些才是真拦路虎。
为什么新建项目后编译报错 “Unknown module(s) in QT: widgets”
这是新手最常撞上的第一堵墙。根本原因不是 Qt 没装,而是 Kit(构建套件)没对上模块。
-
Tools > Options > Kits里看 Kit 的 Qt version 是否真的包含widgets模块(Qt 6 默认不带 widgets,必须显式勾选qtbase+qttools+qt5compat;Qt 5 则默认含 widgets) - 检查项目
.pro文件里有没有QT += widgets(Qt 5)或find_package(Qt6 REQUIRED COMPONENTS Widgets)(Qt 6 + CMake) - Windows 下如果用了 MSVC 编译器但 Qt 是 MinGW 版本,Kit 会绿标变红——两者 ABI 不兼容,不能混用
双击 mainwindow.ui 进不了设计模式?
不是 Designer 坏了,是文件绑定关系断了。
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
- 确认
.pro文件里有FORMS += mainwindow.ui(qmake 项目),否则uic根本不处理这个文件 - Qt 6.5+ 默认用 CMake,必须在
CMakeLists.txt中写qt_add_resources或qt_add_designer_files才能识别.ui - 右键
mainwindow.ui→ “Open With” → 确保选的是 “Qt Designer (default)” 而不是纯文本编辑器
改了 UI,代码里 ui->pushButton 却报未声明?
说明 ui_*.h 没刷新,不是语法错了,是头文件没更新。
- 保存
.ui文件后,手动点菜单栏Build > Run qmake(qmake 项目)或Projects > CMake > Run CMake(CMake 项目) - 检查项目构建目录下是否存在
ui_mainwindow.h(qmake)或ui_mainwindow.h在build/子目录中(CMake) - 如果用了自定义类名(比如把
MainWindow改成MyWindow),ui_*.h里声明的仍是旧类名,必须同步改ui_mainwindow.h里的class Ui_MainWindow为Ui_MyWindow,否则ui->xxx成员不可见
moc)之间那层看不见的契约:你改了什么、该让谁重新生成、什么时候该清缓存——这些细节不摸清,再多的界面操作都只是假性熟练。

















