Название: Вопрос по фильтрам QDir
Отправлено: qt_beginner от Ноябрь 14, 2011, 09:09
Вот такая проблема стоит. Мне нужно, чтобы фильтр выбрал директории и файлы, с расширениями ext1,ext2,ext3. Как это лучше сделать? Описанная ниже конструкция не работает - применяется либо setFilter либо setNameFilters QStringList filters; filters << "" << "*.ext1" << "*.ext2" << "*.ext3"; fileDir.setFilter(QDir::Dirs); fileDir.setNameFilters(filters);
Название: Re: Вопрос по фильтрам QDir
Отправлено: virtual_root от Ноябрь 14, 2011, 09:48
В этом коде делается то что ты хочешь,организовано ввиде рекурсии,чтобы во всех папках текущей директории нийти файлы с указанным расширением,которое задается с помощью маски. void FileFinder::start(const QDir& dir) { QApplication::processEvents();
QStringList listFiles = dir.entryList(m_ptxtMask->text().split(" "), QDir::Files); foreach (QString file, listFiles) { m_ptxtResult->append(dir.absoluteFilePath(file)); }
QStringList listDir = dir.entryList(QDir::Dirs); foreach (QString subdir, listDir) { if (subdir == "." || subdir == "..") { continue; } start(QDir(dir.absoluteFilePath(subdir))); } }
Название: Re: Вопрос по фильтрам QDir
Отправлено: truetrup от Ноябрь 14, 2011, 21:19
Недавно делал коечто подобное... Вот пример: QDir directory(dir); QStringList filtr; filtr << "" << "*.ext1" << "*.ext2" << "*.ext3"; directory.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); QFileInfoList list = directory.entryInfoList(); //тут допустим выводишь list в консоль(сейчас list список дирректорий); directory.setFilter(QDir::Files); directory.setNameFilters(filtr); list = directory.entryInfoList(); //ну а теперь list содержит список файлов с примененным фильтром по имени...
|