c++ - 基类之外的 Qt 属性

标签 c++ qt qml

我为我的 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/

相关文章:

c++ - Opencv Mat结构坐标

c++ - C和C++中引用传递的含义?

java - 如何检测何时在触摸设备上显示键盘?

qt - QML取消选中ExclusiveGroup中的选中按钮

c++ - 如何在 C++ 的精确帧中设置 QQuickItem 位置?

qt - 如何创建QML到D的绑定(bind)?

c++ - 链表在递归搜索列表中不存在的元素时会核心转储

c++ - 链接错误 Opencv Qt '_ZN2cv6String10deallocateEv

c++ - Qml 图像不会在源更改和信号接收时刷新

c++ - 将 QbyteArray 保存到 Qstring