5

私はあなた方全員がその時点にいたと確信しています-たくさんの、かなり些細なアクセサを持っQ_OBJECTたものを定義します:Q_PROPERTIES

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がMetaObjectイントロスペクションを使用していることを考えると、ここでは動的プロパティに依存することはできません(静的プロパティが好きです)-質問は、手作業を節約するツールはありますか?

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

それとも、他の人が使用している別の開発パターンがありますか?

4

1 に答える 1

3

道具がわからない、ごめんなさい。しかし、Qt 5.1は「moc」コンパイラを拡張しているため、準備ができたら満足できるかもしれません。Qt5.1機能リストの「必須モジュール->moc」のセクションを参照してください。

Q_PROPERTYの新しいキーワード:MEMBERを使用すると、ゲッターやセッターがなくても、プロパティをクラスメンバーにバインドできます。

于 2013-05-01T07:34:37.810 に答える