Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Добавление всех файлов из заданного каталога
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Herr
Необходимо задавать в файловом диалоге каталог и на выходе получать добавление в программу всех файлов определенного типа из заданного каталога.

Как я понял, QFileDialog::getExistingDirectory возвращает лишь сам адрес каталога, а несколько файлов можно добавить только через QFileDialog::getOpenFileNames и то путем ручного выделения каждого файла.

Можете посоветовать какой-нибудь выход из этой ситуации?
kibsoft
Цитата(Herr @ 13.5.2010, 23:31) *
Необходимо задавать в файловом диалоге каталог и на выходе получать добавление в программу всех файлов определенного типа из заданного каталога.

Как я понял, QFileDialog::getExistingDirectory возвращает лишь сам адрес каталога, а несколько файлов можно добавить только через QFileDialog::getOpenFileNames и то путем ручного выделения каждого файла.

Можете посоветовать какой-нибудь выход из этой ситуации?

Реализуй свой диалог, раз ничего не подходит.
Andrewshkovskii
Не кроссплатформенно есть в ВИНАПИ для поиска файлов findFirst и FindNext .
Гость
давным давно делал так:
strFrom=QFileDialog::getExistingDirectory(this,"",QApplication::applicationDirPath(),
                                                  QFileDialog::ShowDirsOnly);
<...>
QStringList findFiles(const QString &startDir)
{
    QStringList names,fileFilter;
    QDir dir(startDir);
    fileFilter << "*.txt";    

    if(ui->subDirCheckBox->isChecked()) {
        foreach(QString subDir, dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot))
            names += findFiles(startDir + "/" + subDir);
    }

    foreach(QString file,dir.entryList(fileFilter,QDir::Files))
        names += startDir + "/" + file;

    return names;
// и далее как-то так:
    foreach(QFile f, findFiles(strFrom)) {    
     <...>
    }
Litkevich Yuriy
Гость_*, можно несколько компактнеезаписать:
QDir dir(QFileDialog::getExistingDirectory(...));
QDir::Filters filter = ...;
QString nameFilters = ...;
QDir::SortFlags sort = ...;
foreach(QString file, dir.entryList(nameFilters, filter, sort)){
//...
}
а вообще всё верно, тут ни чего сложного нет
Herr
Ок, спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.