Domanda

Sto usando Pyqt 4.4.

È meglio mostrato usando alcune immagini. Tutti i nodi dovrebbero avere foglie da 0 a 99. vengono caricati in modo incrementale usando canFetchMore() e fetchMore(). Ma per qualche motivo sconosciuto per me questo funziona solo per il nodo radice. (Immagine 1)

Se crollo ed espando un nodo, carica ulteriori 10 valori. (Immagine 2 e 3)

È anche strano, che carica 10 valori, poiché il codice carica solo 5 per chiamata a fetchMore(), il che significa che questo viene chiamato 2 volte prima che il codice si interrompa per caricare più dati.

Screenshot 1 Screenshot 2 Screenshot 3

Ho scritto un piccolo esempio per dimostrare il problema, eseguilo con python test.py. http://snipt.org/llh

Qualcuno sa cosa causa questo errore?

È stato utile?

Soluzione

Ho dato un'occhiata alla sorgente QT (V4.5, anche se non mi aspetto molta differenza tra V4.4 e V4.5) per QabstractItemview e Qtreeview, e non credo che supportino il carico pigro incrementale di nodi figli.

Qabstractemview non ha nozioni di alberi, quindi chiama solo fetchMore() Sul massimo indice. Chiama fetchMore() quando:

  • La geometria viene aggiornata
  • Le barre di scorrimento vengono spostate
  • Le righe vengono inserite
  • L'elemento corrente viene modificato a seguito di un'operazione di trascinamento automatica

Qtreeview inoltre chiamate fetchMore() quando:

  • Un oggetto viene ampliato (questa è essenzialmente l'unica volta che chiama fetchMore() con un indice non root)
  • Il layout della vista deve essere inoltrato, come con expandAll() e collapseAll()

Penso che la soluzione migliore sarebbe quella di sottoclasse Qtreeview per chiamarlo fetchMore() nei luoghi appropriati e con gli indici appropriati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top