ich habe Probleme beim Update eines TreeViews mit einem selbstgeschriebenen QAbstractItemModel:
Das Refresh im Model wird im Augenblick ganz einfach durch Löschen mit darauf folgenden Wiederaufbau des kompletten Model-Baums durchgeführt.
Alles ist super bis ich versuche auf ein Element des Views zu klicken... dann rauchts
Ich schätze mal das ganze hängt damit zusammen, daß der View sich persistente Links zu den Model-Tree-Elementen hält. Damit hätte ich kein Problem, wenn es eine Möglichkeit gäbe diese persistenten Links upzudaten...
Bin ich so blind, daß ich die richtige Methode nicht finde? Weiss jemand rat - ein modifizieren des Model-Trees ist eigentlich zu aufwendig - da bin ich mit löschen und neuaufbauen schneller - obwohl wenn ich weiter so im dunklen tappe dann vlt auch nicht...
ich geb mal ein bißchen Code mit - vlt bin ich ja nicht nur blind sondern auch zu doof... :
in der View klasse der RefreshCallBack:
Code: Alles auswählen
void TreeView::refresh()
{
MyDirModel* dmodel = getModel();
dmodel->refresh();
}
Code: Alles auswählen
// default Parameter QModelIndex()
void MyDirModel::refresh ( const QModelIndex & parent)
{
// ein Signal damit läufts besser ;-)
emit layoutAboutToBeChanged();
// gehe rekursiv durch Baum und lösche (delete) alle Items (auch root Item)
initDirNodes(_rootItem);
// anlegen eines neuen DirModels
_rootItem = new DirNode();
// Baum aufbauen (rekursiv)
addChild2Item("/rootItem/Pfad", _rootItem, false);
// wieder ein Signal
emit layoutChanged();
}
Weiß jemand Rat?
Danke
Junior0007