Zusammenspiel data(), canFetchMore und fetchMore()

Alles rund um die Programmierung mit Qt
Antworten
fuzz
Beiträge: 2
Registriert: 8. August 2012 20:11

Zusammenspiel data(), canFetchMore und fetchMore()

Beitrag von fuzz »

Ich bin auf der Suche nach jemanden, der mir ein wenig auf die Sprünge hilft und mir das Zusammenspiel zwischen QAbstractTableModel::data(), QAbstractTableModel::canFetchMore() und QAbstractTableModel::fetchMore() erklärt.

Hintergrund: Ich würde gerne eine Playlist erstellen, die ihre Informationen aus einer Ajax-Quelle bekommt, d.h. die Playlist enthält 500 Songs, wovon über die Ajax-Schnittstelle dann nur die Daten geladen werden, die auch gebraucht werden, weil Sie gerade angezeigt werden müssen.

Wenn aus meiner Klasse "data()" aufgerufen wird, dann muss ich die Daten für jede Spalte/Zeile zur Verfügung stellen bzw. über den Ajax Aufruf im Backend erfragen. Als ich das programmiert habe, wurde jedoch über das Ajax-Interface alle Informationen über alle 500 Songs abgefragt, obwohl nur ein kleiner Bruchteil aktuell davon gebraucht wird.

Wie spielt hier jetzt "canFetchMore()" und "fetchMore()" rein? Im qt-Beispiel Fetch More Example werden die Funktionen dazu benutzt, Daten von Festplatte zu lesen und stückchenweise an das Model zu verfüttern. Aber genau das will ich ja nicht. Ich will ja nicht auf Vorrat laden, sondern nur das laden, was angezeigt werden soll.

Um die Frage mal selber zu beantworten, muss mein abgeleitetes "canFetchMore()" dann immer false zurückliefern?

Danke für einen Tritt in die richtige Richtung. :D
fuzz
Beiträge: 2
Registriert: 8. August 2012 20:11

Re: Zusammenspiel data(), canFetchMore und fetchMore()

Beitrag von fuzz »

fuzz hat geschrieben:Ich bin auf der Suche nach jemanden, der mir ein wenig auf die Sprünge hilft und mir das Zusammenspiel zwischen QAbstractTableModel::data(), QAbstractTableModel::canFetchMore() und QAbstractTableModel::fetchMore() erklärt.
Ich hatte es am Anfang mit einem Model probiert, welches von "QAbstractProxyModel" abgeleitet war. Das ist falsch, zumindest für diesen Ajax-Zweck. Richtig wäre die Klasse "QAbstractTableModel" gewesen. Dann klappt es auch mit dem Ajax.
Antworten