Jestem pewien, że wszyscy z was było w tym momencie - definiowanie Q_OBJECT
niosący mnóstwo Q_PROPERTIES
, wszystkie z dość trywialne akcesorów:QT Właściwości - cukier lub syntaktyczna Development Tools
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 ...]
}
z toną dostępowych wszystko patrzy tak:
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; }
Zważywszy, że QDjangoModel używa meta obiekt introspekcji, nie mogę polegać na właściwości dynamicznych tutaj (poza tym, lubię właściwości statyczne) - pytanie brzmi, czy są jakieś narzędzia, które pozwoliłoby zaoszczędzić mi instrukcję praca?
Kreator Qt wydaje się nie mieć opcji do zadeklarowania i zdefiniowania niektórych domyślnych akcesorów i ich odpowiednich zmiennych prywatnych. Coś jeszcze? Na pewno musiało to przeszkadzać większej liczbie programistów, niż tylko mnie.
A może jest tylko inny wzorzec rozwoju, którego używają inni?
Tak, zawsze mi to przeszkadzało. Q_PROPERTY zawsze był dla mnie jak cukier. Zawsze możesz mieć członka QVariantMap z ogólnymi funkcjami get/set. Lub, jeśli wolisz, niestandardowe 'wyliczenie' z członkiem' QHash '. –
Phlucious
Jedyny przypadek, w którym rozważałbym Q_PROPERTY podczas tworzenia wtyczki dla Projektanta. – Phlucious