Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QDirIterator и сортировка

Автор: RazrFalcon 2.7.2011, 15:19

Пишу небольшой тегэдитор, и для рекурсивной загрузки файлов использую QDirIterator.
Проблема в том, что файлы он добавляет по кривому.
Пример(куча разный, с разными названиями и тд.):

Раскрывающийся текст
"/media/data/Music Temp/Детский академический хор Млада (г. Пермь) - Enjoy The Silence (Depeche Mode cover).mp3"
"/media/data/Music Temp/Helalyn Flowers - Never Enough - Stitches Of Eden2.flac"
"/media/data/Music Temp/Nalepa.mp3"
"/media/data/Music Temp/04 - Sitting On The Moon (Acretongue rmx).flac"
"/media/data/Music Temp/04 - Stream of Consciousness.mp3"
"/media/data/Music Temp/06 - Hybrid Moments.flac"
"/media/data/Music Temp/Toki Tsukasadoru Juuni no Meiyaku.flac"
"/media/data/Music Temp/01 - Emery - The Cheval Glass.flac"
"/media/data/Music Temp/03 - Emiliana Torrini - White Rabbit.flac"
"/media/data/Music Temp/13 - Coming Closer (feat. Takura).flac"
"/media/data/Music Temp/1.mp3"
"/media/data/Music Temp/hi.mp3"
"/media/data/Music Temp/Poets of the Fall - Carnival of Rust - Alchemy Vol.1 (CD).flac"
"/media/data/Music Temp/01 - Emily Browning - Sweet Dreams (are made of this).flac"
"/media/data/Music Temp/30 Seconds To Mars - A Beautiful Lie - A Beautiful Lie.flac"
Как не сложно заметить, он добавляет их как придется, то есть вообще рендомно.

К примеру ls:
Раскрывающийся текст
$ ls
01 - Emery - The Cheval Glass.flac
01 - Emily Browning - Sweet Dreams (are made of this).flac
01 Oxygen (Album Version).mp3
03 - Emiliana Torrini - White Rabbit.flac
04 - Sitting On The Moon (Acretongue rmx).flac
04 - Stream of Consciousness.mp3
06 - Hybrid Moments.flac
13 - Coming Closer (feat. Takura).flac
1.mp3
30 Seconds To Mars - A Beautiful Lie - A Beautiful Lie.flac
Helalyn Flowers - Never Enough - Stitches Of Eden2.flac
hi.mp3
Nalepa.mp3
Poets of the Fall - Carnival of Rust - Alchemy Vol.1 (CD).flac
Toki Tsukasadoru Juuni no Meiyaku.flac
Детский академический хор Млада (г. Пермь) - Enjoy The Silence (Depeche Mode cover).mp3

Я конечно могу сам отсортировать, но может есть какой то более автоматический способ?

Автор: Litkevich Yuriy 2.7.2011, 15:55

Цитата(RazrFalcon @ 2.7.2011, 18:19) *
он добавляет их как придется, то есть вообще рендомно.
по идее он их просто не сортирует, а выдаёт в том порядке, в котором они занесены с писок файлов самой ФС.

Сортировку поддерживает только QDir::entryList(), т.к. он сначала получает весь список, а потом его сортирует.

Автор: RazrFalcon 2.7.2011, 16:18

Ах вот как... ясно.
То есть нужно что то в духе:

  QFileInfoList allFiles;
  QDirIterator dirit("folder path",QDir::AllDirs,QDirIterator::Subdirectories);
  while (dirit.hasNext()) {
    if (QFileInfo(dirit.filePath()).isDir()) {
      allFiles.append(QDir(dirit.filePath()).entryInfoList());
    }
    dirit.next();
  }
Только не пойму как избавится от "." и ".."

Ну в принципе я решил немного другим путем, так как у меня таблица, я просто сделал:
table->sortByColumn(0,Qt::AscendingOrder);
table->setCurrentIndex(table->model()->index(0,0));
Что бы выделяло первую строку всегда.

Автор: Litkevich Yuriy 3.7.2011, 17:40

Цитата(RazrFalcon @ 2.7.2011, 19:18) *
То есть нужно что то в духе:
зачем тебе велосипед? Яже указал метод который даёт сортированный список.

Автор: RazrFalcon 3.7.2011, 18:58

Оно не работает рекурсивно!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)