2016-08-14 4 views
0

私のC++アプリケーションのQMLフロントエンドを使用しています。しかし、私は最初は小さいクラスQtのプロパティが基底クラスの外にある

に私のコードとスプリット機能を整理するために計画され、私のプロパティ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、その作業)はありますか?

ありがとうございました!

+1

http://doc.qt.io/qt-5/properties.html * "NOTIFY信号はオプションです。定義されていれば、既存の信号**をクラス**に指定する必要があります。 "*強調する鉱山。したがって、 'mainBoard'にシグナルを追加し、それをコンストラクタの' pressureSensors'シグナルに接続します。あるいは、 'NOTIFY'の代わりに' WRITE'を使用して、適切なシグナルをあなた自身で放射してください。 –

答えて

1

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; 
}; 
関連する問題