发送信号时,Qt C++插槽不被调用

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

本文关键字:插槽 调用 C++ Qt 信号      更新时间:2023-10-16

调试后,我确信当我调用这个->getNetReply()时没有调用replyFinish()槽。这些是我的文件,在main()函数中,我这样调用getNetReply:Networking a;a.getNetReply();我确实在qmake中添加了QT+=网络。请帮帮我。非常感谢。

我的networking.cpp文件

#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();
}

我的networking.h头文件:

#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
get()函数返回一个QNetworkReply对象。连接到该对象的错误信号,它会告诉你是否发生了错误(以及哪个)。