这是典型的clangcodemodel路径缺失问题,非编译错误;根本原因是qt creator启动clang时未继承gcc默认include路径(如/usr/lib/gcc/x86_64-linux-gnu/11/include),需在.pro中追加includepath或cmakelists.txt中用target_include_directories显式注入。

Qt Creator提示“头文件未找到”但编译能过
这是典型的代码模型(ClangCodeModel)路径缺失问题,不是编译错误,而是编辑器无法索引系统头文件或 Qt 安装路径。常见于 Ubuntu/Debian 系统上,wchar.h、stddef.h 等标准头报错,但 g++ 命令行编译完全正常。
根本原因是 Qt Creator 启动 Clang 分析器时没自动继承 GCC 的默认 include 路径(比如 /usr/lib/gcc/x86_64-linux-gnu/11/include)。
- 打开项目
.pro文件,在末尾追加:INCLUDEPATH += /usr/lib/gcc/x86_64-linux-gnu/11/include(路径需根据gcc -v输出中的libraries行确认) - 若用的是 Qt 6 + CMake,应在
CMakeLists.txt中用target_include_directories(your_target PRIVATE /usr/lib/gcc/...)显式注入 - 不要关掉 ClangCodeModel 插件——关了就失去跳转、补全和实时诊断
include 报错:No such file or directory
说明 Qt 的模块头文件根本没被识别,不是路径错,是 Qt 安装或项目配置断链了。
先验证基础环境:qmake -query 必须能输出 QT_INSTALL_HEADERS 和 QT_INSTALL_LIBS;which qmake 指向你期望的 Qt 版本(比如 /opt/Qt/6.5.0/gcc_64/bin/qmake)。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
- 检查
.pro文件是否含QT += widgets(Qt 6 必须显式声明,core不再隐式包含 widget 类) - 确认
INCLUDEPATH是否漏掉了$$[QT_INSTALL_HEADERS]或等效路径(如/opt/Qt/6.5.0/gcc_64/include) - Qt Creator 的 Kit 配置里,Qt version 是否指向正确安装路径?Build & Run → Kits → Qt version 下拉框不能是空或灰色
提升类(Promoted Widget)头文件找不到
Qt Designer 里设了提升类,生成的 ui_*.h 里有 #include "mywidget.h",但编译时报错找不到——这和 UI 编译流程强相关。
uic 工具只负责把 .ui 转成 ui_*.h,它**不参与头文件路径解析**,全靠构建系统后续处理。
-
.pro中必须确保自定义头文件路径已加入:INCLUDEPATH += $$PWD/src/widgets(路径需与#include语句匹配) - 如果头文件在子目录,且
#include "widgets/mywidget.h",则INCLUDEPATH应为$$PWD/src,而非$$PWD/src/widgets - 检查生成的
ui_*.h文件第一行是否真写了你预期的#include——有时 Designer 保存后没触发 uic 重生成,手动删掉build/目录再构建一次
跨平台移植后头文件路径失效(VS2022 → Linux Qt Creator)
Windows 下 #include "StdAfx.h" 或 #include "json/reader.h" 在 Linux 上直接炸,不是 Qt 问题,是 C++ 语言层大小写+路径敏感性暴露。
VS2022 默认忽略大小写、支持相对路径宽松解析;Linux GCC 和 Qt Creator 全部严格校验。
- 统一把所有
#include改为小写路径:#include "json/reader.h"→#include "json/reader.h"(确认实际文件名是reader.h,不是Reader.h) - 删除 Windows 专用头:
atlstr.h、StdAfx.h等,改用 Qt 或标准库替代(如QString替代CString) - 中文路径、空格路径必须清零——Qt Creator 解析
.pro时遇到 UTF-8 BOM 或空格会静默失败,工程根目录只能是纯 ASCII 字符
INCLUDEPATH、以及 uic/moc 生成阶段的上下文。任一环断裂,都会表现为“找不到”,但背后原因完全不同——不能只看报错文字,得先分清是编辑器假报、构建系统漏配,还是跨平台兼容性塌方。










