QDir::SetSorting не работает в Ubuntu

У меня проблема с 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) Я пытался использовать другие sortFlags ( QDir::Size, QDir::LocaleAware), но ни один из них не работает в Ubuntu. Есть что-то, что мне не хватает? Спасибо за ваше время.


person Malkavian    schedule 19.10.2012    source источник


Ответы (1)


Вы смешиваете 2 переменные: m_dir и m_directory. Я предполагаю, что это опечатка, и вы хотите использовать ту же переменную.

QDirIterator не поддерживает сортировку. QDir::setSorting() влияет только на список, возвращаемый QDIr:: entryInfoList() и QDir:: entryList(). Используйте любой из них для отсортированной итерации.

person Stephen Chu    schedule 19.10.2012
comment
Спасибо за ваш ответ! Да, это была опечатка. Когда я использую QDirIterator в Windows, я всегда получаю изображения в отсортированном виде. Раньше я использовал entryList, но он очень медленный по сравнению с QDirIterator. Есть ли быстрый способ перебирать каталоги? - person Malkavian; 19.10.2012