Pregunta

Estoy usando PYQT 4.4.

Se muestra mejor usando algunas imágenes. Todos los nodos deben tener hojas de 0 a 99. Se están cargando incrementalmente usando canFetchMore() y fetchMore(). Pero por alguna razón desconocido para mí, esto solo funciona para el nodo raíz. (Foto 1)

Si colapso y expanio un nodo, carga 10 valores adicionales. (Imagen 2 y 3)

También es extraño, que carga 10 valores, ya que el código solo carga 5 por llamada a fetchMore(), lo que significa que esto se llama 2 veces antes de que el código se detenga para cargar más datos.

Screenshot 1 Screenshot 2 Screenshot 3

He escrito un pequeño ejemplo para demostrar el problema, simplemente ejecutarlo con python test.py. http://snipt.org/llh

¿Alguien sabe qué causa este error?

¿Fue útil?

Solución

Eché un vistazo a la fuente QT (V4.5, aunque no espero mucha diferencia entre V4.4 y V4.5) para QABStractitemView y QTreeview, y no creo que apoyen la carga perezosa incremental de nodos infantiles.

QABStractItemView no tiene noción de árboles, por lo que solo llama fetchMore() En la parte superior del índice. Llama fetchMore() cuando:

  • La geometría se actualiza
  • Las barras de desplazamiento se mueven
  • Se insertan filas
  • El elemento actual se cambia como resultado de una operación de arrastre y caída de autoscrolling

Qtreeview también llama fetchMore() cuando:

  • Se expande un elemento (esta es esencialmente la única vez que llama fetchMore() con un índice no raíz)
  • El diseño de la vista debe estar en relego, como con expandAll() y collapseAll()

Creo que la mejor solución sería subclase QTreeview para que llame fetchMore() en los lugares apropiados y con los índices apropiados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top