Russian Qt Forum
Ноябрь 26, 2024, 02:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по фильтрам QDir  (Прочитано 4429 раз)
qt_beginner
Гость
« : Ноябрь 14, 2011, 09:09 »

Вот такая проблема стоит. Мне нужно, чтобы фильтр выбрал директории и файлы, с расширениями ext1,ext2,ext3.
Как это лучше сделать? Описанная ниже конструкция не работает - применяется либо setFilter либо setNameFilters
Код:
  QStringList filters;
   filters << "" << "*.ext1" << "*.ext2" << "*.ext3";
   fileDir.setFilter(QDir::Dirs);
   fileDir.setNameFilters(filters);
Записан
virtual_root
Гость
« Ответ #1 : Ноябрь 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)));
    }
}
Записан
truetrup
Гость
« Ответ #2 : Ноябрь 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 содержит список файлов с примененным фильтром по имени...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 21.