Seite 1 von 1

QStandardItem vererben

Verfasst: 16. März 2011 06:28
von forgoden
ich möchte z.b. diesen Konstruktor überladen

Code: Alles auswählen

QStandardItem::QStandardItem(const QString &text)
    : d_ptr(new QStandardItemPrivate)
{
    Q_D(QStandardItem);
    d->q_ptr = this;
    setText(text);
}
Es scheint zu funktionieren wenn ich nur so schreibe

Code: Alles auswählen

Item::Item(const QString &text)
{
    setText(text);
}
Aber trotzdem frage ich mich was ausgelassen wurde? Der Zeiger q_ptr würde dann nicht mehr auf this zeigen. Außerdem hat es kein Elementinitialisierer mehr. Hab kein Plan was ich da reinschreiben soll.

d-> wird wohl eingesetzt wegen compiler-firewall, aber wie gehe ich da vor?

ich kann zurückverfolgen dann kommen Befehle wie

Q_DECLARE_PRIVATE(QStandardItem)
oder
QScopedPointer<QStandardItemPrivate> d_ptr;
aber was ersetze ich da?

Verfasst: 16. März 2011 06:33
von Christian81
Wie wäre es echt mal mit C++ Grundlagen?

Code: Alles auswählen

Item::Item(const QString &text)
  : QStandardItem(text)
{}

Verfasst: 16. März 2011 08:24
von padreigh
Zum Ableiten der QWasAuchImmer must du NIEMALS das Q_P oder p-> irgendwas anfassen - das sind Mechanismen die Binärkompatibilität bei wechselnder Implementation seites Nokia/Trolltech/WieHiesDerNeueDabei garantieren sollen --> WIKIPEDIA ( http://en.wikipedia.org/wiki/Private_cl ... o_known_as )

Hör am besten auf in den QtSourcen zu snüfen und schau dir die diversen Examples an. Und vergiss das pimpln für 12 Monate - wenns dich dann wieder interessiert kannst du da rumdoktoren.

Verfasst: 17. März 2011 05:25
von forgoden
Christian81 hat geschrieben:Wie wäre es echt mal mit C++ Grundlagen?

Code: Alles auswählen

Item::Item(const QString &text)
  : QStandardItem(text)
{}
Im Prinzip hab ich die Grundlagen durchgelesen, nur vergessen.
sorry dass ich bißchen zu steil eingestiegen bin.
und danke, jetzt weiss ich immer wie es geht.

@padreigh: dann weiss ich wie die herangehensweise ist

Verfasst: 17. März 2011 10:28
von padreigh
Ich weiss, der Vergleich hinkt, aber du inspizierst ein Formel1-Motor um deinen Käfer Bj 1970 zu reparieren ;)

Sollte ich mich irren und du bist genial, gelingt dir das - mir gelingt es so nicht.