私は単純なクラスNetworkingを持っています:
private:
QNetworkAccessManager *httpclient;
コンストラクターでオブジェクトを作成し、シグナルとスロットを接続します。
httpclient = new QNetworkAccessManager(this);
connect(httpclient, SIGNAL(finished(QNetworkReply*)), this, SLOT(httpRequestFinished(QNetworkReply*)));
ここで、パブリック メソッド getPage を介して QNetworkAccessManager の get メソッドを呼び出します。
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()));
}
返信はファイルnetworking.hで適切に定義されています:
private:
QNetworkAccessManager *httpclient;
QNetworkReply *reply;
何も変わっていません!しかし、get-Request の後にreply->bytesAvailable()にアクセスすると、すべてのシグナルが同時に送信されます。私は今何時間も探していますが、何が間違っているのかわかりません。