我为我的 C++ 应用程序使用 QML 前端,到目前为止运行良好。但是,我计划整理我的代码并将函数拆分为更小的类
起初,我的 Property decleration 看起来像这样:
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
不支持不属于相关类的 getters/setters 方法。
如果你真的想保留 pressureSensor
类,你必须在 mainBoard
类中提供 getters/setters 并转发调用。
class mainBoard : public QObject
{
Q_OBJECT
Q_PROPERTY(double baroAltitude READ getBaroAltitude)
public:
double getBaroAltitude() const {
return pressureSensors.getBaroAlitude();
}
private:
pressureSensor pressureSensors;
};
关于c++ - 基类之外的 Qt 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947254/