Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Фильтр каталогов на RegExp'ах
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
smooky
// в дире нужны все поддиры которые в имени имеют хотя бы одну цифру или всё имя состоит из цифр
QDir dir("/mydir");
dir.setFilter(QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Dirs);
dir.setSorting(QDir::Name);
QStringList strFilters;
strFilters << "^\\d?$"; // (нерабочее...) вот тут какое выражение надо написать?
dir.setNameFilters(strFilters);
QStringList dirList = dir.entryList(strFilters);
Litkevich Yuriy
Цитата(smooky @ 30.10.2008, 4:57) *
strFilters << "^\\d?$"; // (нерабочее...) вот тут какое выражение надо написать?
dir.setNameFilters(strFilters);
тут у тебя ошибка, методы:
void QDir::setNameFilters ( const QStringList & nameFilters )
QStringList QDir::entryList ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) const

не принимают регулярок. А только wildcards - символы подстановки (* ? и т.п.)


я не проверял, но думаю такое выражение должно удовлетворить твоему условию: [1234567890]
тогда получается так:
QDir        dir("/mydir");
QStringList    strFilters;
QStringList    dirList;

    strFilters << "[1234567890]";
    
    dir.setFilter(QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Dirs);
    dir.setSorting(QDir::Name);
    dir.setNameFilters(strFilters);
    
    dirList = dir.entryList();


P.S. установка списка в строке
Цитата(smooky @ 30.10.2008, 4:57) *
dir.entryList(strFilters);

это лишнее т.к. ты уже задал фильтр имен в функции setNameFilters
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.