我的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上运行。
有什么我想念的吗?
感谢您的时间。

最佳答案

您正在混合2个变量:m_dirm_directory。我认为这是拼写错误,您的意思是使用相同的变量。

QDirIterator不支持排序。 QDir::setSorting()仅影响QDIr:: entryInfoList()QDir:: entryList()返回的列表。将它们之一用于排序迭代。

10-08 14:51