90%的No such file or directory报错源于构建系统未正确配置头文件路径,核心原因是INCLUDEPATH未设置、.pro文件未生效或Kit选择错误;必须显式添加含$$PWD的相对路径、确保HEADERS包含对应头文件、修改后务必重新运行qmake。

直接说结论:90% 的 No such file or directory 报错不是代码写错了,而是构建系统没把头文件路径告诉编译器——INCLUDEPATH 没配、.pro 文件没生效、或者 Kit 选错了。
INCLUDEPATH 没加对路径,尤其含子目录时
比如你写了 #include "ui/mywidget.h",但 mywidget.h 实际在项目根目录下的 src/ui/ 文件夹里,那光写 INCLUDEPATH += src 是不够的——编译器不会递归搜索子目录。
- 正确做法是显式写出完整相对路径:
INCLUDEPATH += $$PWD/src/ui -
$$PWD是项目 .pro 文件所在目录,必须用它,不能硬写绝对路径(跨机器就废) - 如果用了 Qt 的资源系统(
.qrc),注意qrc里的文件不参与头文件搜索,INCLUDEPATH只管.h.hpp等源码文件 - 多个路径用空格分隔,不要用逗号或分号
控件提升后找不到自定义类头文件
在 Designer 里把 QWidget 提升为 MyButton,结果报 "MyButton.h": No such file or directory,大概率是因为类文件不在 .pro 同级目录下。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
- Qt Creator 默认只在
.pro所在目录及其子目录里自动扫描HEADERS,但提升控件时不会自动把路径加进INCLUDEPATH - 必须手动在
.pro里补上:INCLUDEPATH += $$PWD/src/widgets(假设MyButton.h在src/widgets/下) - 同时确认该头文件已加入
HEADERS列表:HEADERS += src/widgets/MyButton.h,否则 moc 不会处理它,也可能间接导致包含失败 - 改完
.pro后必须重新运行qmake(右键项目 → “运行 qmake”),否则改动不生效
Qt 自带头文件都报错,比如 type_traits 或 QApplication
这类错误说明编译器连 Qt 自身的安装都没认全,问题出在 Kit 配置或 MSVC/MinGW 工具链兼容性上。
- 检查 Qt Creator 左下角 Kit 是否选对:MSVC 版 Qt 必须配对应版本的 MSVC(如 Qt 5.15.2 msvc2019_64 → Kit 里 Compiler 必须是 Microsoft Visual C++ Compiler 16.9)
- 打开 Kit 设置 → “Qt 版本” → 点开对应版本详情,确认
QT_INSTALL_HEADERS路径存在且可读(比如D:\Qt\5.15.2\msvc2019_64\include) - Windows 下用 MSVC 编译却报
type_traits找不到,基本是 VS 的 SDK 路径没被 Qt Creator 识别到,需手动在 Kit 的 “Compiler” → “C++ standard” 里设为C++17或更高,并确保 VS 安装了“CMake 工具”和“Windows 10/11 SDK” - Linux 下报
QApplication找不到,先运行sudo apt install qtbase5-dev(Ubuntu/Debian),再检查 Kit 中 Qt 版本是否指向系统安装路径(如/usr/lib/x86_64-linux-gnu/qt5)
第三方库头文件死活找不到
比如加了 #include <opencv2></opencv2> 却报错,不是 OpenCV 没装,而是 Qt 不知道去哪找。
- 别只拷文件进项目目录——那样只是让文件“物理存在”,编译器仍不知道该搜哪里
- 用
INCLUDEPATH += /usr/include/opencv4(Linux)或INCLUDEPATH += C:/opencv/build/install/include(Windows)明确指定头文件根目录 - 如果库用了 CMake,而你用的是 qmake,
pkg-config是更可靠的方式:CONFIG += link_pkgconfig+PKGCONFIG += opencv4 - 注意路径末尾不要加
/opencv2——INCLUDEPATH是头文件搜索起点,#include里的路径是相对于它的
最容易被忽略的一点:所有对 .pro 的修改,包括 INCLUDEPATH、HEADERS、SOURCES,都必须触发一次 qmake 重建才能生效。清理项目、重启 Qt Creator 都不能替代这一步。

















