Сигналы не излучаются - PullRequest
       11

Сигналы не излучаются

0 голосов
/ 09 февраля 2010

У меня есть простой класс Сеть с:

private:
    QNetworkAccessManager *httpclient;

Я создаю объект в конструкторе и подключаю сигнал и слот:

 httpclient = new QNetworkAccessManager(this);
 connect(httpclient, SIGNAL(finished(QNetworkReply*)), this, SLOT(httpRequestFinished(QNetworkReply*)));

Теперь я собираюсь вызвать метод get QNetworkAccessManager с помощью открытого метода getPage:

void Networking::getPage(const QString &uri)
{
  QNetworkRequest request;
  request.setUrl(uri);
  httpclient->get(request);
}

Я ожидаю, что httpRequestFinished будет вызван, но это не так. Я также попробовал это в целях тестирования:

void Networking::getPage(const QString &uri)
{
  QNetworkRequest request;
  request.setUrl(uri);
  reply = httpclient->get(request);
  connect(reply, SIGNAL(finished()), this, SLOT(httpReplyFinished()));
}

где ответ правильно определен в файле network.h :

private:
 QNetworkAccessManager *httpclient;
 QNetworkReply *reply;

Ничего не изменилось! Но если я получу доступ к reply-> bytesAvailable () после запроса get, все сигналы будут отправлены одновременно! Я ищу часами, но не знаю, что делаю не так.

1 Ответ

1 голос
/ 09 февраля 2010

так ... я выяснил почему - но не совсем так: это было управление памятью. Мне пришлось определить мой объект как указатель в моем классе главного окна

Networking *nw;

Теперь я могу использовать его - например, в моей кнопке:

nw = new Networking();
nw->getPage("my url here");

Все прошло как положено! Уффф .. Много учить

...