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

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

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

Автор: Herr 13.5.2010, 22:31

Необходимо задавать в файловом диалоге каталог и на выходе получать добавление в программу всех файлов определенного типа из заданного каталога.

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

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

Автор: kibsoft 13.5.2010, 22:49

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

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

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

Реализуй свой диалог, раз ничего не подходит.

Автор: Andrewshkovskii 13.5.2010, 23:31

Не кроссплатформенно есть в ВИНАПИ для поиска файлов findFirst и FindNext .

Автор: Гость 14.5.2010, 1:22

давным давно делал так:

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 14.5.2010, 9:24

Гость_*, можно несколько компактнеезаписать:

QDir dir(QFileDialog::getExistingDirectory(...));
QDir::Filters filter = ...;
QString nameFilters = ...;
QDir::SortFlags sort = ...;
foreach(QString file, dir.entryList(nameFilters, filter, sort)){
//...
}
а вообще всё верно, тут ни чего сложного нет

Автор: Herr 15.5.2010, 0:11

Ок, спасибо!

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