C++ QFileInfo exists()和isFile()错误
我正在尝试检查提供的路径是否存在以及它是否是文件。C++ QFileInfo exists()和isFile()错误,c++,qt,file,qfile,C++,Qt,File,Qfile,我正在尝试检查提供的路径是否存在以及它是否是文件。 所以我写了这段代码: #include <QFile> #include <QFileInfo> bool Tool::checkPath(const QString &path){ QFileInfo fileInfo(QFile(path)); return (fileInfo.exists() && fileInfo.isFile()); } #包括 #包括 bool工
所以我写了这段代码:
#include <QFile>
#include <QFileInfo>
bool Tool::checkPath(const QString &path){
QFileInfo fileInfo(QFile(path));
return (fileInfo.exists() && fileInfo.isFile());
}
#包括
#包括
bool工具::检查路径(常量QString&path){
QFileInfo文件信息(QFile(路径));
return(fileInfo.exists()&&fileInfo.isFile());
}
我发现以下编译器错误:
错误:“fileInfo”中存在对成员“exists”的请求,该请求属于非类类型“QFileInfo(QFile)”
错误:请求“fileInfo”中的成员“isFile”,该成员属于非类类型“QFileInfo(QFile)”
为什么??我一遍又一遍地阅读文档,但我看不懂。
顺便说一句,QtCreator建议我使用这些方法并完成它们。但是编译器不喜欢它。似乎:
编译器认为
QFileInfo fileInfo(QFile(path));
是类似于QFileInfo fileInfo(QFile路径)的函数定义代码>
使用类似于:
QFile ff(file);
QFileInfo fileInfo(ff);
bool test = (fileInfo.exists() && fileInfo.isFile());
您可以直接使用
QFileInfo fileInfo(path)
bool test = fileInfo.exists() && fileInfo.isFile()
由于我的声誉不高,我无法发表评论,因此我在这里写了一些关于QFileInfo的行:
QFileInfo fileInfo("./.py");
bool test = fileInfo.exists() && fileInfo.isFile();
那个例子会失败的
我在检查中添加了baseName()值:
为什么需要构造一个文件?只需使用QFileInfo::QFileInfo(const QString&file)构造函数即可。我刚刚错过了该构造函数,但我不明白为什么它会造成任何伤害。但当直接提供路径时,它实际上是有效的。知道为什么吗?我想编译器会处理QFileInfo文件信息(QFile(path));作为函数声明而不是对象初始化。或者可以使用聚合初始化():QFileInfo fileInfo{QFile{path}
。
bool test = fileInfo.exists() && fileInfo.isFile() && !fileInfo.baseName().isEmpty();