Название: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 15, 2012, 17:06 Использую Qt5. Необходимо скачивать небольшие картинки по прямой ссылке.
В конструкторе: Код: manager = new QNetworkAccessManager(this); Код: void MyDownloader::doDownload(const QString &path) И СЛОТ, вызываемый коннектом: Код: void MyDownloader::downloadFinished(QNetworkReply *reply) Проблема в том, что метод downloadFinished не вызывается. видимо по тому, что сигнал finished от объекта manager не поступает. Что делать? Спасибо=) Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 15, 2012, 17:18 А ты ошибку поймай от него же. И скорее всего у тебя URL получается неверный. (% на 30 уверен)
Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 15, 2012, 18:14 А ты ошибку поймай от него же. И скорее всего у тебя URL получается неверный. (% на 30 уверен) А как это сделать? он просто проходит дальше, ничего не говоря. У него из сигналов только sslErrors подходит, но у меня ведь не ssl. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 15, 2012, 18:21 из qt4 пример /usr/share/qt4/examples/network/download/ работает, даже если с библиотеками qt5 собираю, значит у меня ошибка. Спасибо.
Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 15, 2012, 19:11 Эммм... возьми нетворк манагер. У него есть сигнал ошибочный.
Не вызывается? Тогда берём reply от get и смотрим у него url. Проверяем - пытаемся скачать по прямой, нормальной ссылке засунутой в QUrl. Не работает? Не может быть :D Название: Re: Проблема с QNetworkAccessManager Отправлено: Kolobok от Ноябрь 15, 2012, 19:42 void QNetworkReply::error ( QNetworkReply::NetworkError code ) [signal]
посмотри, что он шлет. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 11:32 Эммм... возьми нетворк манагер. У него есть сигнал ошибочный. Не вызывается? Тогда берём reply от get и смотрим у него url. Проверяем - пытаемся скачать по прямой, нормальной ссылке засунутой в QUrl. Не работает? Не может быть :D Код: QNetworkReply *reply = manager.get(request); Цитировать QUrl( "http://freebieblog.ru/uploads/posts/2012-02/1329145302_8a7e8cf5e00439e3565873583c32c7c9_full.jpeg" ) Но Код: connect(&manager, SIGNAL(finished(QNetworkReply*)), Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 16, 2012, 11:37 Вы хотите чтобы я написал пример для проверки работоспособности ?
PS в принципе то могу. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 11:48 Вы хотите чтобы я написал пример для проверки работоспособности ? PS в принципе то могу. Я ведь писал выше Цитировать из qt4 пример /usr/share/qt4/examples/network/download/ работает, даже если с библиотеками qt5 собираю, значит у меня ошибка. Спасибо. Пытаюсь сейчас сам разобраться, спасибо за помощь. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 11:57 Кажется понимаю причину, но не пойму почему это так влияет.
В примере qt4/examples/network/download всё находится в одном файле и работает. Я перемещаю в отдельный .h файл - получаю много "qt multiple definition" - на каждый метод по два раза. Перемещаю реализацию методов в .cpp - вызываются все, кто тех, что должны по сигналу (указанные слоты в connect) вызываться. Почему так, я не знаю=) Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 16, 2012, 12:40 вызываются все, кто тех, что должны по сигналу (указанные слоты в connect) вызываться. Зачётная фраза. Сами то поймёте?Выкиньте проект и я укажу вам ошибку. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 13:15 вызываются все, ктоме тех, что должны по сигналу (указанные слоты в connect) вызываться.
Или опечатался или беспроводная клава глючит (она это любит делать=)). Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 16, 2012, 13:18 ктоме :D Выложите проект и в течении 4-10 минут я найду очевидные ошибки :D неочевидные не найду, но попытаюсь :D
Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 13:57 ктоме :D Выложите проект и в течении 4-10 минут я найду очевидные ошибки :D неочевидные не найду, но попытаюсь :D Вот так заработало - отдельный метод, в котором: Код: QUrl url = QUrl::fromEncoded(path.toLocal8Bit()); Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 16, 2012, 14:06 Ну и хорошо, только это не очень правильно. У вас цикл там крутиться, соответственно распараллелить не получится.
Ну да в принципе, если так и нужно, то в путь. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 14:55 Ну и хорошо, только это не очень правильно. У вас цикл там крутиться, соответственно распараллелить не получится. Ну да в принципе, если так и нужно, то в путь. нет, так не нужно=) Сделал из примера qt4 download - работает, точно так же перенёс в свой проект (проект большой, так тут не выложу) - перестаёт загружать. всё в точности скопировал. Единственная разница в том, что в первом случае было в функции main: Код: QCoreApplication app(argc, argv); Код: Downloader manager; PS: Оба проекта компилирую с Qt5 библиотеками, файлы класса Downloader .h и .cpp идентичны. Во втором случае не работает=( Название: Re: Проблема с QNetworkAccessManager Отправлено: Bepec от Ноябрь 16, 2012, 15:14 manager.setParameters(cur_zoom, separation-slice_num-1, stack_num); Ху из дыс.
PS мне уже надоело в телепата играть. Не тот день недели. Название: Re: Проблема с QNetworkAccessManager Отправлено: spirits25 от Ноябрь 16, 2012, 15:23 manager.setParameters(cur_zoom, separation-slice_num-1, stack_num); Ху из дыс. PS мне уже надоело в телепата играть. Не тот день недели. Просто три числа int. Согласен, день не тот. Думаю в поток предыдущий рабочий вариант вынесу и буду его добивать=) |