Verwaltung QModelIndex
Verfasst: 7. Juli 2007 21:37
Hallo.
Ich habe mich den ganzen Nachmittag mit dem Thema Interview und in dem Zusammenhang mit folgendem Beispiel auseinander gesetz.
SimpleDomModel
Ich dachte eigentlich, ich hätte es einigermaßen geblick und als ich nun nach dem Essen nochmal in den Code geschaut habe kam gleich wieder neue Fragen auf. Und zwar geht es um folgende Funktion (aus DomModel.cpp)
Es geht dabei um den Fettgedruckten Teil. (ich sehe gerade ist nicht ganz so fett)
!parent.isValid() Warum sollte die View (die ruft doch diese Funktion auf?) einen ungültigen Index aufrufen? Nach welchem Schema ruft sie überhaupt diese Funktion auf? Wie stellt isValid() fest, ob das Ergebnis true oder false ist? Was vergleicht die Funktion mit was?
parentItem = rootItem Woher weiß die View im Falle von parent.isValid() == false, dass sie nun einen Index auf ein Child des rootItem bekommen hat?
Viele Fragen, ich hoffe ihr könnt mir weiterhelfen!
Ich habe mich den ganzen Nachmittag mit dem Thema Interview und in dem Zusammenhang mit folgendem Beispiel auseinander gesetz.
SimpleDomModel
Ich dachte eigentlich, ich hätte es einigermaßen geblick und als ich nun nach dem Essen nochmal in den Code geschaut habe kam gleich wieder neue Fragen auf. Und zwar geht es um folgende Funktion (aus DomModel.cpp)
Code: Alles auswählen
QModelIndex XML_Model::index(int row, int column, const QModelIndex &parent) const
{
XML_Item *parentItem;
if ([b]!parent.isValid()[/b])
[b]parentItem = rootItem[/b];
else
parentItem = static_cast<XML_Item*>(parent.internalPointer());
XML_Item *childItem = parentItem->child(row);
if (childItem)
return createIndex(row, column, childItem);
else
return QModelIndex();
}!parent.isValid() Warum sollte die View (die ruft doch diese Funktion auf?) einen ungültigen Index aufrufen? Nach welchem Schema ruft sie überhaupt diese Funktion auf? Wie stellt isValid() fest, ob das Ergebnis true oder false ist? Was vergleicht die Funktion mit was?
parentItem = rootItem Woher weiß die View im Falle von parent.isValid() == false, dass sie nun einen Index auf ein Child des rootItem bekommen hat?
Viele Fragen, ich hoffe ihr könnt mir weiterhelfen!