QTreeView Daten dynamisch nachladen (QAbstractItemModel)
Verfasst: 9. April 2008 15:30
so... folgendes:
ich versuch hier grad ne TreeView zu realisieren.
Klappt auch wunderbar, allerdings lässt die Performance zu wünschen übrig.
Es sind zwar recht wenige Daten (<100), allerdings liegen einige Datenbankoperationen dahinter, was das ganze extrem verlangsamt.
Also hab ich mir gedacht, ich lad beim Aufruf nur die erste "Schicht" ohne ChildItems, da das relativ schnell geht.
Klickt der User dann auf ein Item, um es aufzuklappen, sollen die entsprechenden ChildItems geladen, aufgebaut und angezeigt werden.
Nur dabei stoß ich an einige Grenzen. Laut der "Model Subclassing Reference" von Qt bin ich auf "canFetchMore()" bzw. "fetchMore()" gestoßen, was eigentlich soweit passend klingt, allerdings wird letztere nicht mal aufgerufen, wenn ich diese ableite.
Ich hab dann versucht, diese Funktion als Slot zu definieren und entsprechend aufzurufen, wenn in der View das Item geöffnet wird, was zwar auch halbwegs geklappt hat, aber die Daten wurden nicht angezeigt (erst, nachdem der parent nochmal geöffnet wurde).
Ein Senden des Signals "layoutChanged()" innerhalb der fetchMore-Methode führte zu einer Endlosschleife (also auch der falsche Weg)
Meine Frage(n) daher:
Wie genau arbeitet die Methode "fetchMore()" oder wie soll sie arbeiten?
Warum wird sie nicht aufgerufen, wenn ich sie ganz normal ableite (nicht als Slot)? Hab ich was übersehen?
Und wie geht man bei sowas generell vor (nachladen von Daten zur Laufzeit)?
Falls noch Infos oder Codeausschnitte gebraucht werden, sagt bitte bescheid
Danke
ich versuch hier grad ne TreeView zu realisieren.
Klappt auch wunderbar, allerdings lässt die Performance zu wünschen übrig.
Es sind zwar recht wenige Daten (<100), allerdings liegen einige Datenbankoperationen dahinter, was das ganze extrem verlangsamt.
Also hab ich mir gedacht, ich lad beim Aufruf nur die erste "Schicht" ohne ChildItems, da das relativ schnell geht.
Klickt der User dann auf ein Item, um es aufzuklappen, sollen die entsprechenden ChildItems geladen, aufgebaut und angezeigt werden.
Nur dabei stoß ich an einige Grenzen. Laut der "Model Subclassing Reference" von Qt bin ich auf "canFetchMore()" bzw. "fetchMore()" gestoßen, was eigentlich soweit passend klingt, allerdings wird letztere nicht mal aufgerufen, wenn ich diese ableite.
Ich hab dann versucht, diese Funktion als Slot zu definieren und entsprechend aufzurufen, wenn in der View das Item geöffnet wird, was zwar auch halbwegs geklappt hat, aber die Daten wurden nicht angezeigt (erst, nachdem der parent nochmal geöffnet wurde).
Ein Senden des Signals "layoutChanged()" innerhalb der fetchMore-Methode führte zu einer Endlosschleife (also auch der falsche Weg)
Meine Frage(n) daher:
Wie genau arbeitet die Methode "fetchMore()" oder wie soll sie arbeiten?
Warum wird sie nicht aufgerufen, wenn ich sie ganz normal ableite (nicht als Slot)? Hab ich was übersehen?
Und wie geht man bei sowas generell vor (nachladen von Daten zur Laufzeit)?
Falls noch Infos oder Codeausschnitte gebraucht werden, sagt bitte bescheid
Danke