Alles rund um die Programmierung mit Qt
klogg
Beiträge: 129 Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden
Beitrag
von klogg » 4. November 2005 12:31
Aus der Dokumentation habe ich diese Funktion:
The row() function reports the item's location within its parent's list of items:
Code: Alles auswählen
int TreeItem::row() const
{
if (parentItem)
return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
return 0;
}
Ich verstehe nicht, warum hier ein const_cast gemacht wird.
this ist doch schon ein
TreeItem*
HENNING
Zuletzt geändert von
klogg am 4. November 2005 13:31, insgesamt 1-mal geändert.
klogg
Beiträge: 129 Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden
Beitrag
von klogg » 4. November 2005 13:31
Da! Genau das gleiche:
Code: Alles auswählen
QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) const
{
TreeItem *parentItem;
if (!parent.isValid())
parentItem = rootItem;
else
parentItem = static_cast<TreeItem*>(parent.internalPointer());
TreeItem *childItem = parentItem->child(row);
if (childItem)
return createIndex(row, column, childItem);
else
return QModelIndex();
}
Auch hier verstehe ich nicht, warum ein static_cast benutzt wird.
Ihr habt doch bestimmt alle schon mal ein eigenes Model programmiert.
Warum also wird hier gecastet?
HENNING
klogg
Beiträge: 129 Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden
Beitrag
von klogg » 4. November 2005 13:41
klogg hat geschrieben: Da! Genau das gleiche:
Ha! Nicht ganz!
Denn
void * QModelIndex::internalPointer () const
das Ding liefert nur einen void* und den muss man dann natürlich casten.
Allerdings wäre es trotzdem nett, wenn mich jemand über den ersten Fall aufklärt
und mit zum zweiten sagt, warum dort
static_cast verwendet wird.
Muss zugeben, dass ich das noch nie gesehen habe
HENNING
rkossel
Beiträge: 2 Registriert: 8. Dezember 2005 16:17
Beitrag
von rkossel » 8. Dezember 2005 16:22
Hallo,
der Typ von this ist nicht "TreeItem*", sondern "const TreeItem*". Durch das "static_cast" wird das "const" weggecastet.
klogg
Beiträge: 129 Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden
Beitrag
von klogg » 8. Dezember 2005 17:44
Mensch, wer hätte gedacht, dass da noch mal eine Antwort kommt?
Vielen, vielen Dank!
HENNING