Класс JulyScanDir для рекурсивного перебора файлов и папок в отдельном потоке.
Используя его можно сделать прогрессбар перебора файлов или что-то другое не нагружая основной поток
Пример использования запуска с одной строки параметров:
JulyScanDir *scanDir = new JulyScanDir(this);
scanDir->scanDir("C:\\Films","*.avi"); // задание параметров поиска и запуск
Пример использования запуска с отдельными параметрами:
JulyScanDir *scanDir = new JulyScanDir(this);
scanDir->setStartDir("C:\\Films"); // задает папку или список папок разделенных ;; или через QStringList
scanDir->setSearchSubFolders(false); // ищем файлы только в одной папке
scanDir->setSubFoldersFirst(true); // класс в текущей директории сначала сканирует папки а потом файлы
QStringList filtersList;
filtersList << "*.avi" << "*.mpg"; // задание маски файлов
scanDir->setFilesFilter(filtersList);
scanDir->scanDir(); // запуск поиска
В ответ получаем сигналы которые можно прикрутить к переменной класса:
void dirChanged(QString); // Во время поиска возвращает полный адрес следующей директории
void fileChanged(QString); // Во время поиска возвращает полный адрес текущего файла
void fileChanged(QFileInfo); // Во время поиска возвращает полную информацию о файле
void numChanged(int); // Во время поиска возвращает последовательный номер найденого файла
void loadedList(QStringList); // По завершению поиска возвращает список найденых файлов
void errorHeppend(int); // Если случилась ошибка то возвращает: 0 если не найдено никаких файлов
// и 1 если заданая папка поиска не существует
Еще параметры:
void setIgnoreDirs(QStringList); // задает список полных адресов папок что будут пропущены в поиске
void setIgnoreDirs(QString); // задает одну папку что будет пропущена в поиске или список папок через ;;
void clearIgnoreDirs(); // очищает и отключает список игнорируемых папок
void setRegExp(QRegExp fileRegExp); // задание регулярного выражения, если оно верно к имени файла он будет выведен в результат
void clearRegExp(); // очищает и отключает RegExp
void setSearchHidden(bool hidden); // задает фильтр поиска, искать ли скрытые файлы и папки
При начале сканирования и по окончании fileChanged(QString) возвращает пустую строку (так удобнее при перерисовке результата)
setStartDir(), setIgnoreDirs(), setFilesFilter() задаються как и через QStringList так и QString.
QString будет разбит на список разделенный из строки символами ;;
Буду рад услышать коментарии, критику или просто спасибо на форуме