QDir :: SetSorting在Ubuntu上不起作用

时间:2012-10-19 00:54:01

标签: c++ qt ubuntu directory qdir

我有QDir的问题,我有这个包含大量图片的文件夹,我需要遍历它们但是,它们必须进行排序,所以,我正在使用setSorting(QDir::Name)但是,它没有'在 Ubuntu 上工作。当我用QDirIterator迭代它时,它随机选择给定文件夹中的图片。奇怪的是我在Windows上使用相同的精确代码(minGW或MSVC)并且它完美地运行。

someClass::someClass(QDir dir) {
     m_dir = dir;
     m_directory.setSorting(QDir::Name);
     QStringList filter;
     filter << QString("*.") + format << QString("*.") + "jpg";
     m_dir.setNameFilters(filter);
}
someClass::iterateDir() {
     QDirIterator it(m_dir);
     while(it.hasNext()) {
         it.next();
         qDebug() << it.fileName();

         //analayze the picture here
     }
}

这里it.fileName()应该打印(0.jpeg,1.jpeg .... 3000.jpeg),而是打印(2342.jpg,1286.jpg,684.jpg ... 712.jpg)我尝试使用其他sortFlagsQDir::Size, QDir::LocaleAware),但它们都不适用于Ubuntu。 有什么我想念的吗? 谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

您混合了两个变量:m_dirm_directory。我认为这是错字,你的意思是使用相同的变量。

QDirIterator不支持排序。 QDir::setSorting()仅影响QDIr:: entryInfoList()QDir:: entryList()返回的列表。使用其中任何一个进行排序迭代。