QDir::entryInfoList意外行为

QDir::entryInfoList unexpected behavior

本文关键字:entryInfoList QDir 意外      更新时间:2023-10-16

代码很简单:

void DirManagement::listFiles(QDir dir)
{
   QFileInfoList list = dir.entryInfoList(QDir::NoFilter, QDir::NoSort);
   for (int i = 0; i < list.size(); ++i)
   {
      QFileInfo fInfo = list.at(i);
      QString fPath = fInfo.absoluteFilePath();
      qDebug() << "# " << i << fPath;   }
}

问题是,如果我的目录路径是:"/home/adasi/Desktop/GCUFolder"结果如下:

#  0 "/home/Alya/Desktop/MCUFolder" 
#  1 "/home/Alya/Desktop" 
#  2 "/home/Alya/Desktop/MCUFolder/32Mon Oct 24 2011" 
#  3 "/home/Alya/Desktop/MCUFolder/32Sun Oct 23 2011"

然而,我所期望的只是给定目录下的内容:

#  0 "/home/Alya/Desktop/MCUFolder/32Mon Oct 24 2011" 
#  1 "/home/Alya/Desktop/MCUFolder/32Sun Oct 23 2011"

我尝试了大多数qt过滤器。没有工作。

只是为了添加更多信息它像Mat所说的那样工作,指定你想要列出的内容,像这样:

myQdirObject.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::NoSort);

使用QDir::NoDotAndDotDot过滤器,这将从搜索中删除目录本身及其父目录。

entryInfoList应与QDir::NoDot | QDir::NoDotDot过滤器一起调用:

QFileInfoList list = dir.entryInfoList(QDir::NoDot | QDir::NoDotDot, QDir::NoSort);

查看相应的Qt文档以获取更多过滤器