关键是要选对项目模板:写纯c/c++控制台程序必须选non-qt project → plain c++ application,而非qt widgets application,否则因链接qt gui库导致编译或链接失败。

Qt Creator 里写第一个程序,关键不是选对模板,而是别误用 Qt Widgets 模板写纯 C/C++ 控制台程序——这会导致链接错误或启动黑窗口。
选错项目类型会直接编译失败
很多人点“新建项目”后下意识选 Qt Widgets Application,结果写完 main() 函数还报 undefined reference to `WinMain@16'(Windows)或 qMain 找不到(Linux/macOS)。这是因为 Qt Widgets 模板默认启用 GUI 框架,入口函数是 main() 但依赖 Qt 的事件循环和 QApplication 初始化。
- 写纯 C/C++ 控制台程序(比如打印 "Hello, World"),必须选
Non-Qt Project→Plain C++ Application - 写带图形界面的 C++ 程序,才选
Application→Qt Widgets Application - 如果选了 Qt Widgets 模板但删掉所有 Qt 头文件和
QApplication相关代码,qmake或CMakeLists.txt仍会强制链接 Qt GUI 库,导致链接失败
Plain C++ Application 模板怎么用
这个模板生成的是标准 ISO C++ 程序,不依赖 Qt,适合练算法、系统编程或嵌入式基础开发。它生成的 main.cpp 里只有 int main(int argc, char *argv[]),没有 Qt 头文件,也不调用 QApplication。
- 创建路径:菜单栏
文件→新建文件或项目→ 左侧选Non-Qt Project→ 右侧选Plain C++ Application - 构建套件必须含 C++ 编译器(如
MinGW 11.2、MSVC 2019或Clang 16),不能只选 Qt 版本 - 生成的
.pro文件里不含QT += core widgets,也不会自动加CONFIG += c++17,如需 C++17 特性,得手动在.pro中添加CONFIG += c++17
Qt Widgets Application 的 main() 不能随便改
这个模板的 main.cpp 默认长这样:
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
如果你删掉 QApplication 和 w.show(),只留 return 0;,程序能编译但会立刻退出——因为没启动 Qt 事件循环,UI 根本不会渲染。
-
a.exec()是阻塞调用,负责分发鼠标、键盘、重绘等事件;去掉它,窗口打不开 - 想加控制台输出?可以在
MainWindow构造函数里用qDebug() ,但别在 <code>main()里用printf混用——Qt 的日志系统和 C 标准库缓冲行为可能不同步 - 如果真需要同时有控制台 + GUI(比如调试时看 log),Windows 下可在
.pro中加CONFIG += console,macOS/Linux 则需改main()启动方式,不是简单加一行freopen
运行前务必确认构建套件已就绪
Qt Creator 不自带编译器,所谓“默认编译器”只是指你系统里已安装且被 Qt Creator 自动探测到的工具链。常见卡点:
- 安装 Qt 时没勾选编译器(例如只装了 Qt 6.5 但没装配套的
MinGW 11.2),项目会显示 “No valid kits found” - Windows 上装了 MSVC 但没装对应版本的 Visual Studio Build Tools,Kit 显示黄色感叹号
- Linux 上
g++在/usr/bin/g++,但 Qt Creator 读的是$PATH环境变量——终端里能运行g++ --version,不代表 Qt Creator 能看到
检查路径:菜单栏 工具 → 选项 → 构建和运行 → 构建套件,看右侧列表里是否有带绿色对勾的 Kit。没有就点 添加,手动指定编译器路径和 Qt 版本。










