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.
Я что-то упускаю?
Спасибо за ваше время.

0

Решение

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

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]