0

我在课堂上有一些信号,叫做requestFinished.
我也有 slot _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);
};

然后你需要确保 moc 是针对它运行的(通常这在 QtCreator 中是自动的)

于 2014-10-31T12:41:28.823 回答