Название: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 13:20 Здравствуйте, есть функция, которая загружает страницу и дожидается загрузки с помощью
connect(manager, SIGNAL(finished(QNetworkReply *)), SLOT(requestFinished(QNetworkReply*))); Но этот ответ попадает только в функцию requestFinished, там все ок, но мне надо его как-то получить в той функции, где произошел запрос (и где этот самый коннект). как это можно сделать? Название: Re: Вопрос по загрузке страницы Отправлено: mutineer от Март 25, 2013, 13:24 Код
Название: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 13:42 Я так и делаю
Код
Но возвращает пустую строку, а в файл C:\\file.htm записывает то, что надо Название: Re: Вопрос по загрузке страницы Отправлено: RedDog от Март 25, 2013, 13:44 Дык потому что сервер не может моментально ответить, вот первый readAll и не отрабатывает. (а если б отрабатывал, тогда в файл ничего б не писалось).
Название: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 13:49 Я про то и говорю. Когда оно до конца загружает, вызывается другая функция и туда передается ответ. Но мне надо-то, чтобы в этой функции ответ был доступен
Название: Re: Вопрос по загрузке страницы Отправлено: mutineer от Март 25, 2013, 14:04 Он еще физически от сервера не пришел. Чтобы он был доступен, его надо ждать
Название: Re: Вопрос по загрузке страницы Отправлено: RedDog от Март 25, 2013, 14:10 Но мне надо-то, чтобы в этой функции ответ был доступен Зачем? В чем принципиальная разница для вас по окончании или в неком промежутке считывать ответ?Другими словами: что надо получить в 1-м случае и что надо получить во 2-м случае? Название: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 14:14 Я говорю про то, что функция должна сделать запрос и возвратить ответ. А как она возвратит ответ, если он в другой функции уже?
Название: Re: Вопрос по загрузке страницы Отправлено: mutineer от Март 25, 2013, 14:15 Значит эта функция должна дождаться из QNetworkReply сигнала finished() и только тогда считывать ответ. Но тогда "другая" функция ответ уже не получит таким способом, как сейчас написано
Название: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 14:20 Значит эта функция должна дождаться из QNetworkReply сигнала finished() и только тогда считывать ответ. Но тогда "другая" функция ответ уже не получит таким способом, как сейчас написано Да вторая функция по сути и не нужна. Но что написать между этими строчками?Код: reply = manager->get(QNetworkRequest(url)); Название: Re: Вопрос по загрузке страницы Отправлено: ConConovaloff от Март 25, 2013, 14:21 Может быть вам подойдет QEventLoop?
Код: /* Create the QEventLoop */ Название: Re: Вопрос по загрузке страницы Отправлено: RedDog от Март 25, 2013, 14:21 Чем принципиально должен отличаться ответ в DoRequest от requestFinished?
Название: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 14:24 Чем принципиально должен отличаться ответ в DoRequest от requestFinished? Ничем, вторая функция не нужнаНазвание: Re: Вопрос по загрузке страницы Отправлено: bagi от Март 25, 2013, 14:30 Может быть вам подойдет QEventLoop? Код: /* Create the QEventLoop */ Да, вот так все работает, спасибо) |