Frage

Ich benutze PYQT 4.4.

Es wird am besten mit einigen Bildern gezeigt. Alle Knoten sollten Leafs von 0 bis 99 haben. Sie werden inkrementell verwendet, indem sie verwendet werden canFetchMore() und fetchMore(). Aber aus irgendeinem Grund, der für mich unbekannt ist, funktioniert dies nur für den Stammknoten. (Bild 1)

Wenn ich zusammenbricht und einen Knoten erweitere, wird zusätzliche 10 Werte geladen. (Bild 2 & 3)

Es ist auch seltsam, dass es 10 Werte lädt, da der Code nur 5 pro Anruf zu lädt fetchMore(), Dies bedeutet, dass dies zwei Mal aufgerufen wird, bevor der Code aufhört, weitere Daten zu laden.

Screenshot 1 Screenshot 2 Screenshot 3

Ich habe ein kleines Beispiel geschrieben, um das Problem zu demonstrieren. Führen Sie es einfach mit python test.py. http://snipt.org/llh

Weiß jemand, was diesen Fehler verursacht?

War es hilfreich?

Lösung

Ich habe einen Blick auf die QT -Quelle (V4.5) für QabstractItemView und QTreeview erwarte, obwohl ich keinen großen Unterschied zwischen V4.4 und v4.5 erwarte, und ich glaube nicht, dass sie eine inkrementelle faule Ladung von untergeordneten Knoten unterstützen.

QabstractItemView hat keine Vorstellung von Bäumen, daher ruft es nur auf fetchMore() im obersten Index. Es ruft fetchMore() Wenn:

  • Die Geometrie wird aktualisiert
  • Die Bildlaufleisten werden bewegt
  • Zeilen werden eingefügt
  • Der aktuelle Element wird aufgrund eines autoscrolling Drag & Drop -Betriebs geändert

Qtreeview zusätzlich Anrufe fetchMore() Wenn:

  • Ein Artikel wird erweitert (dies ist im Wesentlichen das einzige Mal, dass er anruft fetchMore() mit einem Nicht-Root-Index)
  • Das Layout der Ansicht muss relaid sein, wie mit expandAll() und collapseAll()

Ich denke fetchMore() an den entsprechenden Stellen und mit den entsprechenden Indizes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top