[Interest] Example for: QTreeView + QAbstractItemModel + external data

Andy asmaloney at gmail.com
Sat Apr 30 14:43:10 CEST 2016


On Sat, Apr 30, 2016 at 4:08 AM, anton <antonxx at gmx.de> wrote:

> Thanks Björn,
>
> I'll try it (actually i did the job in the rowCount() function..)
> I would have preferred that the documentation be clear about this,
> I mean with a detailed example :-)
>

Slight aside:

Since you're working with QAbstractItemModel I would highly recommend using
Model Test in your debug build:

  https://wiki.qt.io/Model_Test

I've written many QAbstractItemModel-derived classes, and I still find them
hard to get right. Model Test has helped catch a lot of edge cases.


> Thanks
>
> Anton
>
> Björn Schäpers wrote:
>
> > Am 26.04.2016 um 19:05 schrieb anton:
> >> Hi,
> >>
> >> I have subclassed QAbstractItemModel,
> >> and I want to load additionally data in the model
> >> as soon as somebody clicks on the [+]
> >> in the treeview to load the children of this
> >> item form an external data ( web- app which gives me json data back).
> >>
> >> Now:
> >>   I reimplemented hasChildren() in the model
> >> but i am not sure about the moment to load the data.
> >>
> >> I suppose that the rowCount() method of the model is called
> >> when somebody expands an item in the view?
> >> If not what is the moment when my model should ask for additional Data?
> >>
> >> Does there exist a small example which demonstrates how to
> >> handle this in an optimal way.
> >> Not sure about beginInsertRows() or layoutChanged() ..
> >> I am experimenting but i get also some crashes so an
> >> example project would be nice.
> >>
> >> Thanks
> >>
> >> Anton
> > I think you are looking for QAbstractItemModel::canFetchMore() and
> > fetchMore(). See also the last paragraph in
> > http://doc.qt.io/qt-5/qabstractitemmodel.html
> >
> > To create models that populate incrementally, you can reimplement
> > fetchMore() and canFetchMore(). If the reimplementation of fetchMore()
> > adds rows to the model, beginInsertRows() and endInsertRows() must be
> > called.
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>

---
Andy Maloney  //  https://asmaloney.com
twitter ~ @asmaloney <https://twitter.com/asmaloney>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160430/b0d8eb3c/attachment.html>


More information about the Interest mailing list