2012-09-25 15 views
5

私はあなたのすべてが、その点にあったと確信している - すべてではなく些細なアクセサと、Q_PROPERTIESのトンを運ぶQ_OBJECTを定義する:QTプロパティ - シンタックスシュガーや開発ツール

class ORM_Customer : public QDjangoModel 
{ 
    Q_OBJECT 

    Q_PROPERTY(QString firstname READ firstname WRITE setFirstname) 
    Q_PROPERTY(QString lastname READ lastname WRITE setLastname) 
    Q_PROPERTY(QString phone  READ phone  WRITE setPhone) 

    Q_PROPERTY(QString address1 READ address1 WRITE setAddress1) 
    Q_PROPERTY(QString address2 READ address2 WRITE setAddress2) 
    Q_PROPERTY(QString houseno READ houseno WRITE setHouseno) 
    Q_PROPERTY(QString postcode READ postcode WRITE setPostcode) 
[... snip ...] 
} 

アクセサのトンとすべてのことのように見える:

QString ORM_Customer::firstname() const { return m_firstname; } 
QString ORM_Customer::lastname() const { return m_lastname; } 

void ORM_Customer::setFirstname(QString &n) { m_firstname = n; } 
void ORM_Customer::setLastname(QString &n) { m_lastname = n; } 

QDjangoModelは、メタオブジェクトのイントロスペクションを使用していることを考えると、私は(ほかに、私は、静的プロパティが好き)、ここでの動的な特性に依存することはできません - 質問があり、私のマニュアルを保存する任意のツールがあります労働?

Qt Creatorでは、デフォルトアクセサーとそれぞれのプライベート変数を宣言して定義するオプションはありません。それは確かに私自身よりも多くの開発者を悩ませていたに違いない。

他の開発パターンがありますか?

+0

はい、それはいつも気になります。 Q_PROPERTYはいつも砂糖のように私に出会いました。ジェネリックget/set関数を持つQVariantMapメンバをいつでも持つことができます。または、もし望むのであれば、メンバ 'QHash 'を持つカスタムの' enum'。 – Phlucious

+0

私はQ_PROPERTYを考慮する唯一のケースは、Designer用のプラグインを開発する場合です。 – Phlucious

答えて

3

私はツールを知りません、ごめんなさい。しかし、「moc」コンパイラが拡張されているので、準備ができたらQt 5.1に満足しているかもしれません。

NewキーワードQ_PROPERTY中:MEMBERあなたはゲッターやセッターを持つように要求することなく、クラスのメンバーにプロパティをバインドしてみましょうQt 5.1 feature list中 - セクション「> MOCエッセンシャルモジュール」を参照してください。