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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: переодический вызов QHttp::get() - виснет на этапе QHttp::Connecting  (Прочитано 7153 раз)
vinnitu
Гость
« : Август 11, 2008, 10:22 »

Привет.

Использую Qt3 - v3.3.8

Приложение скачивает графический файл в QBuffer.
Отображает его на экране.
Пауза

и всё повторяется.

Так должно быть, но что-то оно всего лишь несколько раз повторяется.
Не могу разобраться в причинах.
Посмотрите пожалуйста код.

Бывает раза 3 пройдёт и висит на QHttp::Connecting,
а бывает и раз 15...

Перепробовал уже кучу вариантов:
- делал в httpDone() emit сигнала который обрабатывает полученные данные и отображает в QLabel
- заменял httpDone на requestFinished с использование id запроса
- с closeConnection() и без
- с ручной установкой headers (чтобы убрать keep-alive) и по умолчанию
- с созданием для каждого get своего буфера с помещением в map и извлечению нужного по requestFinished по id
- без обработки полученных данных даже

ничего не помогает....

как же правильно то?

вот моя реализация (одна из)

Код:
class MyWidget
: public QWidget
{
Q_OBJECT

QLabel * pLabel;
QHttp _http;
QTimer _timer;
public:
MyWidget(QWidget * parent = 0, const char * name = "MyWidget")
: QWidget(parent, name)
, _timer(this)
, _http(this)
{
           QHBoxLayout * layout = new QHBoxLayout(this);
pLabel = new QLabel(this);
layout->addWidget(pLabel);

connect(&_timer, SIGNAL(timeout()), SLOT(timeout()));
connect(&_http, SIGNAL(done(bool)), SLOT(httpDone(bool)));
timeout();
}

void setTimer()
{
      _timer.start(10000, TRUE);
}

public slots:
void timeout()
{
QUrl _image_url("http://ads1.msn.com/ads/1/0000000001_000000000000000301318.jpg");
          _http.setHost(_image_url.host());
_http.get(_image_url.path());
_http.closeConnection();
}

void httpDone(bool error)
{
if (!error) //этот блок необязательный - баг проявляется и без него
{
QByteArray ba = _http.readAll();
QImage img;
img.loadFromData(ba);
QPixmap p;
p.convertFromImage(img);
pLabel->setPixmap(p);
}

setTimer();
}
};

PS: добавил код в пост - потому что вижу что аттачмент виден только залогиненым пользователям
« Последнее редактирование: Август 13, 2008, 12:52 от vinnitu » Записан
vinnitu
Гость
« Ответ #1 : Август 12, 2008, 11:40 »

ничего не помогает....

появляется предательская мысль скачивать посредством winapi файл :-(
а потом передавать указатель на буфер qt
Записан
vinnitu
Гость
« Ответ #2 : Август 12, 2008, 15:55 »

интересно это один я здесь такой _отсталый_ парюсь с Qt3, а все остальные что ли на Qt4 пишут?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Август 12, 2008, 18:56 »

интересно это один я здесь такой _отсталый_ парюсь с Qt3, а все остальные что ли на Qt4 пишут?

Да, имхо большинство уже давно пишет на Qt4 Улыбающийся
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Steven_Orko
Гость
« Ответ #4 : Август 13, 2008, 10:39 »

интересно это один я здесь такой _отсталый_ парюсь с Qt3, а все остальные что ли на Qt4 пишут?

Да, имхо большинство уже давно пишет на Qt4 Улыбающийся
OFF:
Насчет большинства не уверен ))))
Довольно много и на Qt3 пишут... Особенно те, кто с МСВС возится (спасибо минобороны) Просто они сюда мало пишут...
Записан
vinnitu
Гость
« Ответ #5 : Август 13, 2008, 12:46 »

Просто они сюда мало пишут...

а куда же они пишут? или у них всё с первого раза получается?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #6 : Август 19, 2008, 22:56 »

если из мин обороны
то у них инет может быть бумажный - тоесть че нада скачивает админ) и распечатывает на листок
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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