0

我对 QDir 有疑问,我有这个包含很多图像的文件夹,我需要遍历它们,但是必须对它们进行排序,所以,我正在使用它,但它在UbuntusetSorting(QDir::Name)上不起作用。当我使用 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) 我尝试使用其他sortFlags( QDir::Size, QDir::LocaleAware) 但是它们都不能在 Ubuntu 上运行。有什么我想念的吗?感谢您的时间。

4

1 回答 1

3

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

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

于 2012-10-19T01:04:23.590 回答