[EMAIL PROTECTED] wrote: > Hello, > > I'm trying to write a small app for displaying the hierarchical structure > of an xml file using the model/view framework. > > To do this, I have created a XmlTreeModel class inherited from > QAbstractItemModel to hold the hierarchical model and a QTreeView to > display it. I have also defined a XmlTreeItem class to handle each single > xml element. > Parsing file and building model is achieved in populate(), parseBranch() > and createItem() functions. For each XmlTreeItem instance, the > corresponding QModelIndex.internalId is the reference identifier. This > Long value is stored into the XmlTreeItem instance itself and also into a > HashMap<Long, XmlTreeItem>. This unique identifier for each XmlTreeItem > instance is used to retrieve data once the model completely built, > especially in the QAbstractModelItem data() function. > > Here is the model class code (quite long, sorry) :
Hi, The QAbstractItemModel is not an ideal class for representing hierarchical datastructures, unfortunatly. There was quite some discussion about this in the early days of this mailing list and I did post an example in this thread: http://lists.trolltech.com/qt-jambi-interest/2006-12/thread00011-0.html It uses the same approach as you, with an internalId-index hash and is quite slow because of it ;-/ I didn't look thouroughly at your code, but I suggest that you look at your parent() function. That is usually where I usually have problem in the QAbstractItemModel. Because of the lack of usability and some performance problems with QAbstractItemModel in Java when used as a QTreeModel we implemented com.trolltech.qt.gui.QTreeModel. Did you look at it? With it you can map your XMLNodes directly rather than using the QModelIndex indirection. Hope this helps, Gunnar _______________________________________________ Qt-jambi-interest mailing list [email protected] http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest
