Undefined reference in Qt4

空扰寡人 提交于 2019-12-13 07:10:06

问题


I'm trying to change the user agent in Qt4.

My code: main.cpp:

#include <QApplication>
#include <QDeclarativeContext>
#include <QDeclarativeEngine>
#include "qmlapplicationviewer.h"
#include "NetworkAccessManagerFactory.h"

#ifdef DEBUG
    #include "logger.h"
#endif

Q_DECL_EXPORT int main(int argc, char *argv[])
{

    QScopedPointer<QApplication> app(createApplication(argc, argv));
    app->setOrganizationName("...");
    app->setApplicationName("...");

    QmlApplicationViewer viewer; /*and stuff related to it*/
    QString userAgent("useragentstring");

    NetworkAccessManagerFactory factory(userAgent);

    viewer.engine()->setNetworkAccessManagerFactory(&factory);

    /*showing*/

    return app->exec();
}

NetworkAccessManagerFactory.h:

#ifndef NETWORKACCESSMANAGERFACTORY_H
#define NETWORKACCESSMANAGERFACTORY_H
#include <QDeclarativeNetworkAccessManagerFactory>
#include "CustomNetworkAccessManager.h"

class NetworkAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory
{
public:
    explicit NetworkAccessManagerFactory(QString p_userAgent = "");

    QNetworkAccessManager* create(QObject* parent)
    {
        CustomNetworkAccessManager* manager = new CustomNetworkAccessManager(__userAgent, parent);
        return manager;
    }

private:
    QString __userAgent;
};

#endif // NETWORKACCESSMANAGERFACTORY_H

CustomNetworkAccessManager.h:

#ifndef CUSTOMNETWORKACCESSMANAGER_H
#define CUSTOMNETWORKACCESSMANAGER_H
#include <QNetworkAccessManager>
#include <QNetworkRequest>

class CustomNetworkAccessManager : public QNetworkAccessManager {
    Q_OBJECT
public:
    explicit CustomNetworkAccessManager(QString p_userAgent = "", QObject *parent = 0);

protected:
    QNetworkReply *createRequest( Operation op, const QNetworkRequest &req, QIODevice * outgoingData=0 )
    {

        QNetworkRequest new_req(req);
        new_req.setRawHeader("User-Agent", __userAgent.toAscii());

        QNetworkReply *reply = QNetworkAccessManager::createRequest( op, new_req, outgoingData );
        return reply;
    }

private:
    QString __userAgent;
};

#endif // CUSTOMNETWORKACCESSMANAGER_H

The errors are:

/home/marcin/proj/mobilitare/main.cpp:31: error: undefined reference to `NetworkAccessManagerFactory::NetworkAccessManagerFactory(QString)'
/home/marcin/proj/mobilitare/NetworkAccessManagerFactory.h:13: error: undefined reference to `CustomNetworkAccessManager::CustomNetworkAccessManager(QString, QObject*)'

What am I doing wrong? Thanks!

来源:https://stackoverflow.com/questions/20226212/undefined-reference-in-qt4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!