Reputation: 21
I created a new class and added a function to it which is supposed to retrieve data on the current euro exchange rate. I used QNetworkAccessManager. When I try to build project I got errors. After I comment QNetworkAccessManager logic errors disapeard.
Currencies.h
#ifndef CURRENCIES_H
#define CURRENCIES_H
#include <QObject>
#include <QFile>
#include <QTextStream>
#include <QtDebug>
#include <QList>
#include <QProcess>
#include <QRegularExpression>
#include <QSettings>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkRequest>
#include <QtXml/QtXml>
#include <QDebug>
#include <string.h>
#include <QFile>
#include <QByteArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QObject>
#include <algorithm>
#include "Connections.h"
class Euro : public QObject
{
Q_OBJECT
private:
//Ui::MainWindow *ui;
float euroRate=0;
float finalPriceEuro = 0;
float finalPrice = 0;
QString const urlEuroString = "http://api.nbp.pl/api/exchangerates/rates/a/eur/?format=json";
Connection::Status connectStatus;
QSettings settings;
public:
Euro();
~Euro();
float GetEuroRate() const;
void SetEuroRate(double);
void SetFinalPriceEuro(float);
float GetFinalPriceEuro() const;
void SetFinalPrice(float);
float GetFinalPrice() const;
QString GetEuroUrl() const;
void SaveEuroRate();
void LoadEuroRate();
};
#endif // CURRENCIES_H
Currencies.cpp
#include "Currencies.h"
Euro::Euro()
{
QNetworkAccessManager* manager = new QNetworkAccessManager(this);
connect(manager,&QNetworkAccessManager::finished,this,[&](QNetworkReply* reply)
{
if(reply->bytesAvailable())
{
connectStatus.SetConnectionStatus(true);
}
else
{
connectStatus.SetConnectionStatus(false);
}
});
qDebug()<<connectStatus.GetConnectionStatus();
}
Euro::~Euro()
{
}
float Euro::GetEuroRate() const{
return euroRate;
}
void Euro::SetEuroRate(double rateValue){
euroRate = rateValue;
}
QString Euro::GetEuroUrl() const{
return urlEuroString;
}
void Euro::SetFinalPriceEuro(float price)
{
finalPriceEuro = price;
}
float Euro::GetFinalPriceEuro() const
{
return finalPriceEuro;
}
void Euro::SetFinalPrice(float price)
{
finalPrice = price;
}
float Euro::GetFinalPrice() const
{
return finalPrice;
}
void Euro::SaveEuroRate(){
//settings.setValue("euroRate",currencyRate.GetEuroRate());
qDebug()<<"Zapisano!";
}
void Euro::LoadEuroRate()
{
}
Errors
:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2b0): undefined reference to `__imp__ZN21QNetworkAccessManagerC1EP7QObject'
:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2b7): undefined reference to `__imp__ZN21QNetworkAccessManager8finishedEP13QNetworkReply'
:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2d6): undefined reference to `__imp__ZN21QNetworkAccessManager16staticMetaObjectE'
:-1: error: collect2.exe: error: ld returned 1 exit status
Any idea how to solve this? Thanks a lot !
Upvotes: 0
Views: 279