Habe ein sehr seltsamen Problem...
Wenn ich ueber QModellIndex auf ein Item in einem TreeView zugreife, passieren seltsame Dinge.
Ich habe ein TreeItem (wie aus den Beispiel Codes in der Dokumentation),
und ein FooTreeItem, welche von TreeItem abgelitten ist...
Wenn ich das ganze so verwende, funktionert alles Problemlos (getInteralPointer von QModellIndex liefert mir den richtigen Pointer).
Wenn ich jedoch FooTreeItem jetzt jedoch auch noch von QObject ableite (und natuerlich das Q_OBJECT Macro setze), dann liefert mir getInternalPointer einen falschen Pointer, er zeigt naemlich exakt 8 Bytes zu weit.
Code: Alles auswählen
FooTreeItem* MyWidget::getFooTreeItemAtIndex(const QModelIndex & index) {
FooTreeItem *item = const_cast<FooTreeItem*>(index.internalPointer());
// warum zeigt der pointer hier 8 byte zu weit?!
fprintf(stderr, "achtung - hier passieren enorm ekelhaftige dinge!\n");
item = (FooTreeItem *)(((char*)item) - 8);
return item;
}
Hat jemand eine Idee was hier schief laeuft?
P.S.: Wenn ich TreeItem von QObject ableite funktioniert auch alles Problemlos, das ist im Moment mein Workaround.