Russian Qt Forum

Qt => Работа с сетью => Тема начата: catprog от Сентября 29, 2009, 11:35



Название: QHttp::setHost почему появляется сигнал?
Отправлено: catprog от Сентября 29, 2009, 11:35
При вызове
->setHost(some_host,80);
сразу возникает сигнал requestFinished() так и должно быть? Он мне мешает, так как ничего на самом деле не скачано.
Вот так связал
Код:
QObject::connect( own_chanel,
                      SIGNAL( requestFinished(int,bool) ),
                      this,
                      SLOT( dataDone(int, bool) ) );
и вот так объявил
Код:
void Chanel_my::dataDone(int, bool) // моя функция
{
//.....
}

Может дело в этих int, bool? Зачем они вообще надо?
QHttp::close() помоему тоже подозрительно себя ведет.


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: BlackTass от Сентября 29, 2009, 12:01
Вы просто проверяйте этот самый непонятный вам инт на соответствие идшнику возвращенному от get(), post(), request() и будет все хорошо. То что возникает такой сигнал это правильно, так как первый реквест это запрос хоста, а уже только потом ваш запрос.
Еще есть смысл перейти на QNetworkAccessManager, так как QHttp объявлен как obsolete и будет выкинут из Qt.


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: catprog от Сентября 29, 2009, 22:18
Вы просто проверяйте этот самый непонятный вам инт на соответствие идшнику возвращенному от get(), post(), request() и будет все хорошо.
А как же я это проверю на соответствие если метод request() еще не вызван, а сигнал requestFinished(int,bool) уже появился и надо его обработать ???


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: BlackTass от Сентября 30, 2009, 07:48
ну инициализируйте этот член минус единицей например или еще чемнибудь что точно не придет в этом сигнале и все


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: catprog от Сентября 30, 2009, 10:37
ну инициализируйте этот член минус единицей например или еще чемнибудь что точно не придет в этом сигнале и все

Код:
own_chanel->setHost(some_host,80);
.... = own_chanel->request(*this->own_header);
Ок так и сделаю, в дебаге заметил что метод request() успевает вызваться до первого сигнала requestFinished(int,bool) нельзя ведь надеятся что так будет всегда?


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: BlackTass от Сентября 30, 2009, 11:43
Если у вас метод, в котором делается сетХост и реквест находится в том же потоке, что и евентлуп в котором отрабатывает слот и нет processEvents() между setHost() и request(), то сначала выполнится этот метод, а только потом уже слоты. Но надеяться на это не надо все равно, мало ли придется разнести на разные потоки.


Название: Re: QHttp::setHost почему появляется сигнал?
Отправлено: catprog от Сентября 30, 2009, 15:30
благодарю за разъеснения