Необходимо задавать в файловом диалоге каталог и на выходе получать добавление в программу всех файлов определенного типа из заданного каталога.
Как я понял, QFileDialog::getExistingDirectory возвращает лишь сам адрес каталога, а несколько файлов можно добавить только через QFileDialog::getOpenFileNames и то путем ручного выделения каждого файла.
Можете посоветовать какой-нибудь выход из этой ситуации?
Не кроссплатформенно есть в ВИНАПИ для поиска файлов 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)) {
<...>
}
Гость_*, можно несколько компактнеезаписать:
QDir dir(QFileDialog::getExistingDirectory(...));
QDir::Filters filter = ...;
QString nameFilters = ...;
QDir::SortFlags sort = ...;
foreach(QString file, dir.entryList(nameFilters, filter, sort)){
//...
}
а вообще всё верно, тут ни чего сложного нет
Ок, спасибо!
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)