Top.Mail.Ru
Уведомления
Очистить все

[Решено] Сортировка файлов в QDir.

(@_alex_)
New member

Привет любителям Qt, у меня вопрос по поводу сортировки файлов. Создаю объект QDir:

QDir dir("D:/test_folder");
QStringList files = dir.entryList();

for (int i = 0; i < files.size(); i++)
{
    qDebug() << files.at(i);
}

Для теста вывожу список файлов в папке. Файлы выводятся отсортированные по имени файла, в алфавитном порядке. Как мне сделать, чтобы файлы в QStringList files были отсортированы по времени изменения?

Цитата
Создатель темы Размещено : 01.07.2021 22:20
AI
 AI
(@ai)
Level 3 Moderator

Добрый день!

Это реализуется через:

setSorting(QDir::SortFlags sort)

Аргумент может быть:

Constant Value Description
QDir::Name 0x00 Sort by name.
QDir::Time 0x01 Sort by time (modification time).
QDir::Size 0x02 Sort by file size.
QDir::Type 0x80 Sort by file type (extension).
QDir::Unsorted 0x03 Do not sort.
QDir::NoSort -1 Not sorted by default.
QDir::DirsFirst 0x04 Put the directories first, then the files.
QDir::DirsLast 0x20 Put the files first, then the directories.
QDir::Reversed 0x08 Reverse the sort order.
QDir::IgnoreCase 0x10 Sort case-insensitively.
QDir::LocaleAware 0x40 Sort items appropriately using the current locale settings.

 

То есть для Вашего примера:

QDir dir("D:/test_folder");
dir.setSorting(QDir::Time);

QStringList files = dir.entryList();

for (int i = 0; i < files.size(); i++)
{
    qDebug() << files.at(i);
}
ОтветитьЦитата
Размещено : 02.07.2021 13:28
(@_alex_)
New member

Спасибо, получилось, но теперь хочу поменять порядок вывода. То есть изначально вышло от последнего изменения к более ранним, а я хочу наоборот. Пробую так:

QDir dir("D:/test_folder");
dir.setSorting(QDir::Time);
dir.setSorting(QDir::Reversed);

Но выводится снова в алфавитном порядке, только теперь в обратном направлении.

ОтветитьЦитата
Создатель темы Размещено : 02.07.2021 14:17
AI
 AI
(@ai)
Level 3 Moderator
QDir dir("D:/test_folder");
dir.setSorting(QDir::Time | QDir::Reversed);
ОтветитьЦитата
Размещено : 02.07.2021 17:21
(@_alex_)
New member
От: @ai
QDir dir("D:/test_folder");
dir.setSorting(QDir::Time | QDir::Reversed);

Понял, спасибо, получилось!

ОтветитьЦитата
Создатель темы Размещено : 02.07.2021 19:01
(@_alex_)
New member

Тему закрываю)

ОтветитьЦитата
Создатель темы Размещено : 02.07.2021 19:01
Поделиться: