QDir :: entryInfoList意外行为

时间:2011-10-24 06:53:12

标签: c++ qt4

我的代码非常简单:

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过滤器。没用。

3 个答案:

答案 0 :(得分:9)

只是为了添加更多信息 它就像Mat说的那样,指定你要列出的内容,如下所示:

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

应使用entryInfoList过滤器调用QDir::NoDot | QDir::NoDotDot

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

检查corresponding Qt Documentation以获取更多过滤器。