Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: yandzee от Сентября 29, 2011, 22:17



Название: Не скачивает в нужную директорию
Отправлено: yandzee от Сентября 29, 2011, 22:17
В одной из предыдущих моих тем, товарищ поделился со мной классом для закачки файлов. .h и .cpp приложил.
Собственно при реализации одной программы, мне нужно было сменить директорию и скачать туда файлы, папку создавал, переходил туда, выводил даже путь для проверки qDebug ом, но файл скачивается в папку, где лежит exeшник.

Вот тестовая программка

Код:
#include <QtGui>
#include "httpclient.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDir dir;
    dir.mkdir("test_folder");
    dir.cd("test_folder");
    QHttpClient *pclient = new QHttpClient;
        qDebug() << dir.path();
    pclient->getFile("google.ru", "test.html");

    return a.exec();
}
Как быть? Что можно попробовать?


Название: Re: Не скачивает в нужную директорию
Отправлено: Rem Norton от Сентября 29, 2011, 22:34
в файле "httpclient.cpp" в функции "bool QHttpClient::getFile(QString cURL, QString cFileName, int Timeout)"
заменить:
Код
C++ (Qt)
QDir dir(QCoreApplication::applicationDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
 

на:
Код
C++ (Qt)
QString cFilePath = cFileName;
 

или на:
Код
C++ (Qt)
QDir dir(QDir::currentDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
 

либо так:
Код
C++ (Qt)
#include <QtGui>
#include "httpclient.h"
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QDir dir;
   dir.mkdir("test_folder");
   QHttpClient *pclient = new QHttpClient;
       qDebug() << dir.path();
   pclient->getFile("google.ru", "./test_folder/test.html");
 
   return a.exec();
}
 


Название: Re: Не скачивает в нужную директорию
Отправлено: Alex Custov от Сентября 29, 2011, 22:37
QDir::cd() не меняет текущий каталог. Это делает QDir::setCurrent(), о чём написано в документации.


Название: Re: Не скачивает в нужную директорию
Отправлено: Rem Norton от Сентября 29, 2011, 22:41
QDir::cd() не меняет текущий каталог. Это делает QDir::setCurrent(), о чём написано в документации.
Дело не только в этом: функция bool QHttpClient::getFile(QString cURL, QString cFileName, int Timeout) заточена так, что принимает cFileName, как путь  относительно exe-шника. Тут либо юзать как есть, принимая во внимание сей факт, либо немного подрихтовать класс под свои нужды.


Название: Re: Не скачивает в нужную директорию
Отправлено: yandzee от Сентября 30, 2011, 12:06
Цитировать
QDir dir(QCoreApplication::applicationDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
Я их итак убрал. Я перехожу в другую директорию cd, но закачка происходит именно по пути exe шника.
Дома попробую setCurrent()...