Russian Qt Forum

Qt => Работа с сетью => Тема начата: QApple от Май 11, 2009, 10:54



Название: QHTTP + сигналы и слоты
Отправлено: QApple от Май 11, 2009, 10:54
Добрый вечер, форумчане

Воюю с Qt уже некоторое время, столкнулся с новым препятствием
Задача: отправить запрос (через qhttp), получить результат, отпарсить нужные данные, отправить новый запрос, получить, отпарсить, ...

С сигналами и слотами пока на Вы. Основные моменты:

1. создаю класс и http
...
Код
C++ (Qt)
wnd : public QMainWindow
...
QHttp *http;
 
...

2. связываю нажатие кнопки с вызовом функции где идут мои запросы
...
Код
C++ (Qt)
connect( ui->translate, SIGNAL( clicked() ), this, SLOT( letsgo() ) ) ;
 
...

3. связываю http c функцией done (где у меня идет обработка данных)
...
Код
C++ (Qt)
connect( http, SIGNAL( done(bool) ), this, SLOT( done() ) );
 
...

Что имеем: один запрос обрабатывается корректно. А если в letsgo() запихать два и разделить их выводом done() - получается ерунда.
запрос1
done();
запрос2

Понимаю что чего-то не понимаю, но идей нет )

Как исправить и сделать все корректно?


Название: Re: QHTTP + сигналы и слоты
Отправлено: kwisp от Май 11, 2009, 12:21
почему решил пользоваться именно сигналом done() ???
по моему одного его маловато. он тебе скажет что допустим последний запрос закончился без ошибки а о предшествующих ничего не скажет. :(

я пользуюсь
requestFinished(int,bool)
и
responseHeaderReceived(const QHttpResponseHeader&)

в примерах ${QTDIR}/exapmles/network/ есть примеры работы с http запросами в принципе по ним понятно как работать...


Название: Re: QHTTP + сигналы и слоты
Отправлено: ритт от Май 11, 2009, 13:36
догадываюсь, что пишется переводчик текста :)
в доп.компонентах поищи - у нас уже писали подобное (код стыришь)