tsaG
tsaG

Reputation: 1

Qt property outside of base class

Im using a QML frontend for my C++ App which worked fine so far. However, I planned to tidy up my code and split functions into smaller classes

At first, my Property decleration looked like this:

class mainBoard : public QObject
{
Q_OBJECT
Q_PROPERTY(double baroAltitude MEMBER baroAltitude NOTIFY pressureChanged)

public:
explicit mainBoard(QObject *parent = 0);
void start();

private:
   double baroAltitude = 0;
signals:
   void pressureChanged();
};

Now, I do have this external class, with my getter method.

#include "pressuresensor.h"

class mainBoard : public QObject
{
Q_OBJECT
Q_PROPERTY(double baroAltitude READ pressureSensors.getBaroAltitude NOTIFY pressureSensors.pressureChanged)

public:
explicit mainBoard(QObject *parent = 0);
void start();

private:
   pressureSensor pressureSensors;
};

But now, all I get is:

mainboard.h:25: Parse error at "pressureSensors"
error: [moc_mainboard.cpp] Error 1

Is there a better, or correct (because its working :D ) way for it?

thanks!

Upvotes: 0

Views: 335

Answers (1)

Timo
Timo

Reputation: 1814

Q_PROPERTY does not support getters/setters methods which are not part of the class in question.
If you really want to keep the pressureSensor class you have to provide getters/setters in the mainBoard class and forward the calls.

class mainBoard : public QObject
{
Q_OBJECT
Q_PROPERTY(double baroAltitude READ getBaroAltitude)

public:
double getBaroAltitude() const {
    return pressureSensors.getBaroAlitude();
}

private:
   pressureSensor pressureSensors;
};

Upvotes: 1

Related Questions