Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание html, Помогите разобраться с кодом 
V
    Опции темы
Lindemann66
  Дата 11.8.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всем привет!

Есть код считывания html страницы:
Код

Network::Network(QString urlString) {        
    url = QUrl(urlString);
    manager = new QNetworkAccessManager(this);        
}

void Network::getReply() {    
    QEventLoop loop;
    reply = manager->get(QNetworkRequest(url));
    connect(reply, SIGNAL(finished()), this, SLOT(downloadFinished()));
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();
}

void Network::downloadFinished(){    
    QByteArray webContent = reply->readAll();
}


Мне что непонятно

Зачем здесь используется QEventLoop?
Для того, чтобы отследить момент окончания запроса reply?
Получается, что 2 слота-сигнала именно для этого
Код

connect(reply, SIGNAL(finished()), this, SLOT(downloadFinished()));
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
?
Или можно обойтись без этого, и сделать сразу
Код

void Network::getReply() {    
    reply = manager->get(QNetworkRequest(url));
    QByteArray webContent = reply->readAll();
}


Кто-то знает?
--------------------
stay true
PM MAIL WWW ICQ   Вверх
Sality123
Дата 11.8.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.3.2011

Репутация: нет
Всего: нет



я сам новечек, но со страничками уже работать научился..  как мне видится этот луп в данном виде безполезный.. если его убрать и убрать второй сигнал то результат будет тот же. =))

Код


void Network::getReply() {    
    reply = manager->get(QNetworkRequest(url));
    QByteArray webContent = reply->readAll();



а вот так делать нельзя.. у вас получится вы отправляете гет запрос и тут же читаете ответ.. вы начнете читать ответ быстрее чем он придет в сокет. не зря там сигнал первый стоит finished() как только завершится прием с сокета ответа вы его можете считать =)

Это сообщение отредактировал(а) Sality123 - 11.8.2011, 14:04
PM MAIL   Вверх
Greeneyed
Дата 12.8.2011, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Код

    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();


Это нужно для синхронного запроса. Чтобы не выйти из getReply(), пока не получишь ответ от сервера.
PM MAIL   Вверх
Lindemann66
Дата 12.8.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



спасибо smile разобралсяsmile
--------------------
stay true
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.