2012-09-25 5 views
5

Ich bin sicher, dass alle von Ihnen an diesem Punkt waren -, die ein Q_OBJECT eine Tonne Q_PROPERTIES, alle mit ziemlich trivial Accessoren tragen:QT Eigenschaften - syntaktischer Zucker oder Entwicklungstools

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 ...] 
} 

mit einer Tonne von Accessoren alle auf der Suche wie folgt aus:

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; } 

da QDjangoModel metaObject Selbstbeobachtung verwendet, kann ich hier nicht auf die dynamischen Eigenschaften verlassen (außer, wie ich statische Eigenschaften) - Frage ist, gibt es irgendwelche Werkzeuge, die mir das Handbuch speichern würde Arbeit?

Qt Creator scheint nicht die Option zu haben, nur einige Standard-Accessoren und ihre jeweiligen privaten Variablen zu deklarieren und zu definieren. Sonst noch etwas? Es muss sicherlich mehr Entwickler als nur mich gestört haben.

Oder gibt es vielleicht noch ein anderes Entwicklungsmuster, das andere benutzen?

+0

Ja, das hat mich immer gestört. Q_PROPERTY ist mir immer als Zucker begegnet. Sie könnten immer ein QVariantMap-Mitglied mit generischen Get/Set-Funktionen haben. Oder, wenn Sie möchten, eine benutzerdefinierte 'enum' mit einem Member' QHash '. – Phlucious

+0

Der einzige Fall, in dem ich Q_PROPERTY in Erwägung ziehen würde, ist die Entwicklung eines Plugins für Designer. – Phlucious

Antwort

3

Ich kenne kein Werkzeug, sorry. Aber vielleicht wirst du mit Qt 5.1 zufrieden sein, wenn es fertig ist, weil es den 'Moc' Compiler erweitert. Abschnitt „Wesentliche Module -> moc“ See in Qt 5.1 feature list:

New Stichwort in Q_PROPERTY: Mitglied können Sie binden, um eine Immobilie an einen Teilnehmer, ohne dass ein Getter oder Setter haben.

Verwandte Themen