简体   繁体   中英

Qt C++ Slot is not called when Signal is sent

After debugging, I'm sure that the replyFinish() slot is not called when I call this->getNetReply(). These are my files, in the main() fumction I call the getNetReply this way: Networking a; a.getNetReply(); I did add QT+=network to my qmake. Please help me. Thank you very much.

my networking.cpp file

#include "networking.h"
#include <QUrl>
#include <QNetworkRequest>

// constructor    

void Networking::getNetReply(){
    QNetworkAccessManager *man  = new QNetworkAccessManager(this);
    QObject::connect(man, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
    qDebug() << "connected";
    QNetworkRequest req;
    req.setUrl(QUrl("http://www.google.com"));
    man->get(req);

}
// this method not called
void Networking::replyFinished(QNetworkReply *reply){
    QByteArray data = reply->readAll();
    QString str = QString(data);
    this->netRep = str;
    code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
}

my networking.h header file:

#ifndef NETWORKING_H
#define NETWORKING_H

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>

class Networking : public QObject
{
    Q_OBJECT
public:
    QString netRep;
    int code;
    explicit Networking(QObject *parent = 0);
    void getNetReply();

public slots:
    void replyFinished(QNetworkReply*);

};

#endif // NETWORKING_H

The get() function returns a QNetworkReply object. Connect to the error signal of that object and it will tell you if an error happens (and which).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM