Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QFileInfo exists()和isFile()错误_C++_Qt_File_Qfile - Fatal编程技术网

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();