5
私はQT4クラスを設計しています。これまでのクラスは次のようになっています:セッターとゲッターを生成し、C++プリプロセッサでQ_PROPERTY()を定義する方法
class GIHNode : public QObject, public QGraphicsItem
{
Q_OBJECT
Q_INTERFACES(QGraphicsItem)
[...]
public:
void setInteger(int);
int getInteger();
[..]
private:
int Integer; Q_PROPERTY(int Integer READ getInteger WRITE setInteger)
// Definition I'd like to replace
The setters and getters are implemented like this:
void GIHNode::setInteger(int x){Integer=x;}
int GIHNode::getInteger(){return Integer;}
私はこのすべての仕事を私に任せています。 私は、変数の定義とQ_PROPERTY
内のテキストのためにこれを試してみました:
int Integer; Q_PROPERTY(int Integer READ getInteger WRITE setInteger)
マクロが正しく事前れる
EXPORTEDVAR(int,Integer)
と:私はラインを交換するとき
#define ID(x) x
#define STR_HELPER(x,y) ID(x)y
#define STRGET(x) STR_HELPER(get,x)
#define STRSET(x) STR_HELPER(set,x)
#define EXPORTEDVAR(type,varname) type varname; Q_PROPERTY(type varname READ STRGET(varname) WRITE STRSET(varname))
処理され、次のように置き換えられます。
int Integer; Q_PROPERTY(int Integer READ getInteger WRITE setInteger)
私は手動でcppをチェックしました。コードはコンパイルされますが、このクラスのインスタンスのプロパティは取得できません。 私は、このクラスのインスタンスのメタオブジェクト(QT4 mocから)を使用してプロパティを取得していますが、それを見つけることができません。 これはプリプロセッサと関係があると思いますが、これを調べる方法はわかりません。