0

私のクラスには、 と呼ばれるシグナルがありrequestFinishedます。また、その信号をアクティブにする
スロットがあります。 しかし、私はエラーがあります。 ここにある:_finished
undefined reference to MY_SIGNAL
_finished

void VK::_finished(QNetworkReply *reply) {
    if (reply->error() != QNetworkReply::NoError) {
        qDebug() << (QString) reply->readAll();
    } else {
        QString json(reply->readAll());
        VKResponse *response = new VKResponse(json);
        VKError *error = new VKError(json);
        VKAnswer *answer = new VKAnswer(error, response);
        emit requestFinished(answer);
    }
}

クラスは次のVKとおりです。

class VK {
    public:
        VK(QString token);
        void request(QString method, std::map<QString, QString> data);
        ~VK();

    private:
        QString token;

    private slots:
        void _finished(QNetworkReply *reply);

    signals:
        void requestFinished(VKAnswer *answer);
};

ご覧のとおりrequestFinished、シグナルにメソッドが含まれています。私の問題は何ですか?ありがとう。

4

1 に答える 1

3

VK クラスは QObject をパブリックに継承し、最初に Q_OBJECT を含める必要があります。

class VK: public QObject {
    Q_OBJECT
    public:
        VK(QString token);
        void request(QString method, std::map<QString, QString> data);
        virtual ~VK();

    private:
        QString token;

    private slots:
        void _finished(QNetworkReply *reply);

    signals:
        void requestFinished(VKAnswer *answer);
};

次に、モックがそれに対して実行されるようにする必要があります (通常、これは QtCreator では自動的に行われます)。

于 2014-10-31T12:41:28.823 に答える