Приветствую.
Столкнулся с такой проблемой: есть необходимость скачать несколько файлов, пытаюсь реализовать используя пример от QT:
https://wiki.qt.io/Download_Data_from_URL/ruПример кода:
void MainWindow::download_pdl_files()
{
QUrl file_url;
files_to_download.removeDuplicates();
for(int x = 0; x < files_to_download.size(); x++)
{
ui->sync_status->setText("Downloading file " + files_to_download.at(x) + ".zip");
file_url.setUrl("http://www.url.com/repo/" + files_to_download.at(x) + ".zip");
file_data = new FileDownloader(file_url, this);
file_data->setProperty("file_name", files_to_download.at(x) + ".zip");
connect(file_data, SIGNAL (downloaded()), this, SLOT (process_file()));
qDebug() << files_to_download.at(x);
}
}
void MainWindow::process_file()
{
QFile file("/pdl_repo/" + file_data->property("file_name").toString());
file.open(QIODevice::WriteOnly);
file.write(file_data->downloadedData());
file.close();
ui->sync_status->setText("File " + file_data->property("file_name").toString() + " downloaded");
}
В результате выполнения скачивается и сохраняется только файл, который был последний в списке. Такое ощущение будто последняя итерация цикла перезаписывает сигнал/слот. Но ведь объекты, передаваемые в connect то разные? Почему так происходит?