Russian Qt Forum
Ноябрь 24, 2024, 06:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkReply и наследник QNetworkAccessManager  (Прочитано 4052 раз)
xsentin
Гость
« : Февраль 18, 2011, 00:27 »

создал класс наследник QNetworkAccessManager, переопределил функцию createRequest
Код:
QNetworkReply* CNetworkAccessManager::createRequest(Operation op, QNetworkRequest &request, QIODevice *outgoingData)
{
QNetworkRequest myReq = request;
 return QNetworkAccessManager::createRequest( op, myReq, outgoingData );
}
далее использую в коде
Код:
 mngr = new CNetworkAccessManager(this);
mywebView->page()->setNetworkAccessManager(mngr);
connect(mngr, SIGNAL(finished(QNetworkReply*)), SLOT(mySlot(QNetworkReply*)));
mywebView->load(QUrl("http://www.prog.org.ru"))

в mySlot заходит только один раз, не срабатывает на загрузку контента, а если не использовать свой  CNetworkAccessManager, то сигнал finished реагирует на контент.
в чём может быть проблема?
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #1 : Февраль 18, 2011, 00:40 »

а если передать request, а не с myReq? Т.е. передать, предварительно с ним поработав. Возможно request имеет дополнительные сигнал/слот связи, в отличие от созданного тобой, т.к.:

void QNetworkAccessManager::finished ( QNetworkReply * reply ) [signal]
This signal is emitted whenever a pending network reply is finished. The reply parameter will contain a pointer to the reply that has just finished. This signal is emitted in tandem with the QNetworkReply::finished() signal.
« Последнее редактирование: Февраль 18, 2011, 00:44 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
xsentin
Гость
« Ответ #2 : Февраль 18, 2011, 09:19 »

приведённый мною выше код рабочий, просто сначало идут подряд много запросов, потом много ответов, а не запрос-ответ
« Последнее редактирование: Февраль 18, 2011, 11:48 от xsentin » Записан
kataklysm
Гость
« Ответ #3 : Март 03, 2011, 19:28 »

Используй QEventLoop
Пример:
    
Код:
QEventLoop loop(this);
    connect(replyT,SIGNAL(finished()),&loop,SLOT(quit()));
    loop.exec();
« Последнее редактирование: Март 03, 2011, 19:33 от kat » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 22.