Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Фильтр каталогов на RegExp'ах

Автор: smooky 30.10.2008, 1:57

// в дире нужны все поддиры которые в имени имеют хотя бы одну цифру или всё имя состоит из цифр

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 30.10.2008, 6:52

Цитата(smooky @ 30.10.2008, 4:57) *
strFilters << "^\\d?$"; // (нерабочее...) вот тут какое выражение надо написать?
dir.setNameFilters(strFilters);
тут у тебя ошибка, методы:
http://crossplatform.ru/documentation/qtdoc4.3/qdir.php#setNameFilters
http://crossplatform.ru/documentation/qtdoc4.3/qdir.php#entryInfoList

не принимают регулярок. А только 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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)