Darth Revan,
Комментарии следующие:
Во первых, почитай документацию по Qt (или оригинал в Qt Assistant'е)
Во вторых, почитай конкретно раздел про QNAM.
Насколько я понимаю его устройство, фиг ты сделаешь без классов адекватную качалку. Вообще с Qt4 работать избегая классов - кощунство и глупость.
В приведенном тобой коде главная твоя ошибка состоит в том, что ты не дожидаешься завершения запроса. У QNetworkReply есть функция isFinished(). Сделай хотя бы ожидание окончания запроса. А потом уже обрабатывай ошибки.
Во вторых, подключи хедер QtDebug и пользуйся замечательной штукой qDebug() для вывода отладочной информации.
Рассмотрим кусок кода:
if (Reply->error())
{
delete File;
File->remove();
return 1;
}
Тут вообще странная штука. Ты удаляешь объект File(!) а потом ещё вызываешь remove у уже удаленного объекта. Что из этого выйдет?
Также обрати внимание на то, что у большинства объектов в Qt есть функция deleteLater(), которой и стоит пользоваться вместо delete Object;
Кстати именно в этот кусок и стоит воткнуть вывод сообщений об ошибке:
if (Reply->error())
{
qDebug()<<"An error has occured: "<<Reply->errorString();
File->remove();
File->deleteLater();
return 1;
}
Вот как-то так для начала.
И перепиши на классах. Код станет чище, его станет проще поддерживать в будущем и в целом логичнее и понятнее.
P.S. Вообще лучший способ не править код из поста, а воспользоваться кодом voral'а. Разобраться сначала в нем, а потом уже свой вариант реализации сделать. Так будет правильнее.