#c #qt4
#c #qt4
Вопрос:
Мой код довольно прост:
void DirManagement::listFiles(QDir dir)
{
QFileInfoList list = dir.entryInfoList(QDir::NoFilter, QDir::NoSort);
for (int i = 0; i < list.size(); i)
{
QFileInfo fInfo = list.at(i);
QString fPath = fInfo.absoluteFilePath();
qDebug() << "# " << i << fPath; }
}
Проблема в том, что если мой путь к каталогу: «/home /adasi / Desktop /GCUFolder»
, это результат:
# 0 "/home/Alya/Desktop/MCUFolder"
# 1 "/home/Alya/Desktop"
# 2 "/home/Alya/Desktop/MCUFolder/32Mon Oct 24 2011"
# 3 "/home/Alya/Desktop/MCUFolder/32Sun Oct 23 2011"
Однако я ожидаю только того, что находится в данном каталоге:
# 0 "/home/Alya/Desktop/MCUFolder/32Mon Oct 24 2011"
# 1 "/home/Alya/Desktop/MCUFolder/32Sun Oct 23 2011"
Я перепробовал большинство фильтров qt. Не сработало.
Комментарии:
1. «/home/Alya/Desktop/MCUFolder/32Mon 24 октября 2011» это папка или файл? Может быть, символическая ссылка?
Ответ №1:
Просто чтобы добавить больше информации, это сработало, как сказал Mat, указав, что вы хотите перечислить, например:
myQdirObject.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::NoSort);
Комментарии:
1. Это правильно. простая передача QDir::nodot иdotdot приведет к получению пустого списка. оно должно быть объединено с другим флагом, который указывает, что вы хотите (например, QDir :: Dirs, QDir::Files и т. Д.). Mat абсолютно корректен в дополнительном комментарии к его ответу, но этот ответ содержит полный код для достижения того, чего хочет OP. Голосование за.
2. В нескольких словах: если вы используете один флаг, вы должны полностью указать правила фильтрации.
Ответ №2:
Используйте QDir::NoDotAndDotDot
фильтр, это удалит сам каталог и его родительский каталог из поиска.
Комментарии:
1. аналогично —> пустой список Ничего не было указано!!
2. Вам нужно указать, какой тип файла вы хотите включить в список с
QDir::Files
помощью ,QDir::Directories
,QDir::Drives
или одной из комбинированных констант.3. что мне нужно, так это папки, я пробовал QDir::Files и QDir::Directories, ни один из них не работал!
4. Эта функция работает, я не могу сказать, в чем ваша проблема, не видя код, который вы использовали, и какие разрешения и типы файлов относятся к материалу, который вы пытаетесь перечислить.
Ответ №3:
entryInfoList
Должен вызываться с QDir::NoDot | QDir::NoDotDot
фильтром :
QFileInfoList list = dir.entryInfoList(QDir::NoDot | QDir::NoDotDot, QDir::NoSort);
Проверьте соответствующую документацию Qt для получения дополнительных фильтров.
Комментарии:
1. Mat дал в основном тот же ответ 4 часа назад. Попробуйте прочитать, что написали другие, прежде чем отвечать.
2. это не работает!! когда я устанавливаю этот фильтр, я получаю пустой список!!