• 3719阅读
  • 1回复

[提问]QDirIterator好奇怪。。 [复制链接]

上一主题 下一主题
离线lmaxmax
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-20
        workdir = new QDir("./");
        workdir->mkdir("workplace");
       // qDebug()<< workdir->absolutePath();
        workdir->cd("./workplace");
        //workdir已经指向workplace目录

        //下面这句加上QDir::NoDotAndDotDot之后,iter就什么都没有了,明明就是忽略.和..,iter怎么会是空呢??
        //QDirIterator iter(workdir->absolutePath(),QDir::NoDotAndDotDot,QDirIterator::Subdirectories); 这样不行,为什么?
        QDirIterator iter(workdir->absolutePath(),QDirIterator::Subdirectories);
           while (iter.hasNext()) {
                qDebug() << iter.next();
               QFileInfo info = iter.fileInfo();
                   qDebug() <<info.dir().absolutePath();                  
           }


只能用
if(info.fileName()=="."||info.fileName()=="..")              
continue;
才能过滤掉.和..


谁能解释一下,谢谢! QT 5.5 VS2013

离线stlcours

只看该作者 1楼 发表于: 2015-07-20
也许加了NoDotAndDotDot之后,您就不能这样写了:QDir("./");
所以我都是用continue过滤的。

另外困扰我的一个问题是,QDirIterator迭代奇慢无比,大约是原生WINAPI的三倍时间。这样实在太慢了,没办法的话,就只能用WINAPI改写代码了,虽然改写很不方便。
快速回复
限100 字节
 
上一个 下一个