QT中 No such file or directory的解决办法

报错具体情境:
使用D:\Qt\Qt5.8.0\5.8\mingw53_32> 终端进行编译程序,步骤如下:
qmake -project //生成CH01.pro 文件
qmake CH01.pro //生成 Makefile(总的makefile) Makefile.Debug Makefile.Release
mingw32-make //生成release版本,在release目录下
mingw32-make debug //生成debug版本,在debug目录下
会报如下错误:
dialog.h:4:19: fatal error: QDialog: No such file or directory

这个是由于没有包含相应的头文件目录导致的问题。需要在Makefile.Release(Debug)文件中查看INCPATH = -I. -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Idebug -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++
比如我的错误是头文件QDialog不能找到,该文件在D:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets下,可以查看上面的目录,确实没有包含该目录。
大家可以想下Makefile文件是如何生成的,是qmake根据.pro文件编译后产生的,那么解决方法为:
在创建工程的时候使用如下语句:
qmake -project QT+=widgets
qmake CH01.pro
查看Makefile.Release(Debug)文件中的INCPATH = -I. -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Idebug -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++

.pro文件中各变量意义:

◆ HEADERS 指定工程的 C++头文件(.h)。
◆ SOURCES 指定工程的C++实现文件(.cpp)。
◆ FORMS 指定需要 uic 处理的由 Qt 设计师生成的.ui 文件。
◆ RESOURCES 指定需要 rcc 处理的.qrc 文件。
◆ DEFINES 指定预定义的 C++预处理符号。
◆ INCLUDEPATH 指定 C++编译器搜索全局头文件的路径。
◆ LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自 Unix 的-L 和-l 标识符来指定(例如,-L/usr/local/lib 和-ldb_cxx)。
◆ CONFIG 指定各种用于工程配置和编译的参数。
◆ QT 指定所要使用的 Qt 模块(默认是 core gui,对应于 QtCore 和 QtGui 模块)。加上模块之后,makefile中的模块头文件目录也就自动加上啦。
◆ VERSION 指定目标库的版本号。
◆ TARGET 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本
号(默认的是当前的目录名)。
◆ DESTDIR 指定可执行文件放置的目录(默认值是平台相关的。
例如,在 Linux 上,指当前目录;在 Windows 上,则是指 debug 或 release 子目
录)。
◆ DLLDESTDIR 指定目标库文件放置的目录(默认路径与 DESTDIR 相同)。

CONFIG 变量用来控制编译过程中的各个方面。它支持下面这些参数:

◆ debug 是指具有调试信息的可执行文件或者库,链接 Qt 库的调试版。
◆ release 是指编译不具有调试信息的可执行文件或者库,链接发行版的 Qt 库。如果
同时指定 debug 和 release,则 debug 有效。
◆ warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的。
◆ qt 是指应用程序或者库使用 Qt。这一选项是默认包括的。
◆ dll 是指动态编译库。
◆ staticlib 是指静态编译库。
◆ plugin 是指编译一个插件。插件总是动态库,因此这一参数暗含 dll 参数。
◆ console 是指应用程序需要写控制台(使用 cout、cerr、qWarning(),等等)。
◆ app_bundle 只适用于 Mac OS X 编译,是指可执行文件被放到束中,这是 Mac OS X
的默认情况。
◆ lib_bundle 只适用于 Mac OS X 编译,指库被放到框架中。

关于上面的各个变量的使用方法:
在终端上执行
qmake -project QT+= widgets
则加上了widgets模块,在pro文件中生成 QT+=widgets 语句。

qmake -project SOURCES+= ./src/test/cpp
则在pro文件生成 SOURCES+=./src/test.cpp

### QCameraViewfinder 文件未找到问题解决方案 当遇到 `QCameraViewfinder` 报错提示 "no such file or directory" 时,通常是因为 Qt 多媒体模块未能正确加载或配置不当所致。 #### 检查 Qt 安装完整性 确认安装包中包含了多媒体组件。如果缺少这些库文件,则需要重新安装带有完整功能集的 Qt SDK 或者单独下载并安装 Multimedia 组件[^1]。 #### 验证环境变量设置 确保应用程序能够访问到必要的动态链接库(DLL),需将 Qt 的 bin 路径加入系统的 PATH 环境变量中。对于 Windows 用户来说,这一步骤尤为重要。 #### 修改项目 .pro 文件 为了使程序可以顺利编译运行,在项目的 `.pro` 文件里添加如下语句来引入 multimedia 和 multimediawidgets 库支持: ```qmake QT += core gui multimedia multimediawidgets ``` #### 初始化摄像头设备前检测可用性 在创建 `QCamera` 对象之前先调用静态成员函数 `availableDevices()` 来获取当前系统上可使用的摄像机列表,并从中选取合适的作为参数传递给构造器;这样做的好处是可以避免因指定错误而导致无法打开硬件资源的情况发生。 ```cpp QStringList devices = QCamera::availableDevices(); if (!devices.isEmpty()) { camera = new QCamera(devices.first(), this); } else { qDebug() << "No available cameras."; } ``` #### 设置视图窗口大小适应策略 有时界面布局可能导致预览区域尺寸过小以至于显示不出来图像内容,因此建议调整 `setAspectRatioMode(Qt::KeepAspectRatio)` 方法让其保持宽高比例不变的同时尽可能填充整个控件范围。 ```cpp viewfinder->setAspectRatioMode(Qt::KeepAspectRatio); ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值