C++ 将qnetworkaccessmanager连接到插槽

C++ 将qnetworkaccessmanager连接到插槽,c++,qt,qtcore,qt-signals,qtnetwork,C++,Qt,Qtcore,Qt Signals,Qtnetwork,现在我有了这个代码: 请求者 #ifndef REQUESTER_H #define REQUESTER_H #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkReply> #include <QtCore/QtCore> #include <QVector> #include <QObject> class Requester { Q_OB

现在我有了这个代码:

请求者

#ifndef REQUESTER_H
#define REQUESTER_H

#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtCore/QtCore>
#include <QVector>
#include <QObject>

class Requester
{
Q_OBJECT
public:
    Requester();
    ~Requester();
    QString get_last_reply();
    void send_request();
private:
    QNetworkAccessManager *manager;
    QVector<QString> replies;
public slots:
    void get_reply(QNetworkReply *reply);
};

#endif // REQUESTER_H
这个错误是:

no matching function for call to 'QObject::connect(QNetworkReply*&, const char*, Requester* const, const char*)'

怎么了?我尝试使用just connect而不是QObject::connect,但出现了一个错误,即无法将QNetworkAccessmanager转换为socket

问题在于您没有继承QObject,因此很自然:您无法在该类中处理插槽

你应该这样写:

请求者 requester.cpp
此外,在这种情况下,在堆上构造与堆栈相反的
QNetworkAccessManager
几乎毫无意义。您只需要一个QNetworkAccessManager m_networkAccessManager;没有分配、构造和删除的成员,但这只是未来的附加信息。

Hm。。信号“已完成”未发送。@LongSmith:您解决了信号未发送的问题了吗?
no matching function for call to 'QObject::connect(QNetworkReply*&, const char*, Requester* const, const char*)'
class Requester : public QObject
{
Q_OBJECT
public:
    explicit Requester(QObject *parent);
...
#include "requester.h"

Requester::Requester(QObject *p)
    : QObject(p)
    , manager(new QNetworkAccessManager)
{
}
...