Qt属性外的基类

Qt property outside of base class

本文关键字:基类 属性 Qt      更新时间:2023-10-16

我使用一个QML前端为我的c++应用程序工作良好到目前为止。但是,我计划整理我的代码并将函数拆分为更小的类

一开始,我的Property声明看起来像这样:

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();
};

现在,我有了这个外部类,有了getter方法

#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;
};

但是现在,我得到的只有:

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

是否有更好的或正确的方法(因为它在工作:D) ?

谢谢!

Q_PROPERTY不支持非相关类的getter/setter方法。
如果你真的想保留pressureSensor类,你必须在mainBoard类中提供getter/setter并转发调用。

class mainBoard : public QObject
{
Q_OBJECT
Q_PROPERTY(double baroAltitude READ getBaroAltitude)
public:
double getBaroAltitude() const {
    return pressureSensors.getBaroAlitude();
}
private:
   pressureSensor pressureSensors;
};