Pregunta

Estoy usando Qt / C ++ y tratar de dibujar un QGraphicsScene grande y complejo. Una vez que agrego una gran cantidad de objetos, panorámica y zoom a ser desagradablemente lenta. (No hay sorpresas aquí, por supuesto). He jugado con el dispositivo de almacenamiento en caché de coordenadas (ayuda con la panorámica de un punto) y las actualizaciones mínimas de ventana gráfica y así sucesivamente, pero al final sólo hay demasiados objetos. Lo que me gustaría hacer es sacar los artículos de forma asíncrona desde el control de la interfaz de usuario de alguna manera. En otras palabras, al igual que Google Maps lo hace, quiero alejar o acercar y dejar dibujo ponerse al día lo más rápido que sea capaz, pero para ser capaz de desplazarse de nuevo antes de que los artículos finalizar el dibujo.

Uno de los métodos que estoy intentando es crear dos QGraphicsScenes. Uno tiene los objetos reales, pero no está unido a un QGraphicsView. El otro QGraphicsScene está conectado a la QGraphicsView, pero apenas tiene algunas QPixmaps baldosas que están dimensionados para cubrir la pantalla. El plan es utilizar ciclos de CPU libres de actualizar ninguna de mapa de pixels baldosas que lo necesita. Esto parece que me dará el control necesario sobre la representación (por lo que no tiene que bloquear mientras que re-renderizado toda la escena visible). Pensamientos? Alguien ha implementado esto?

¿Fue útil?

Solución

Tome un vistazo aquí: Generación de contenido en hilos .

Parece que esto es similar a lo que está tratando de hacer. mecanismos de baldosas son formas muy comunes para cargar grandes cantidades de datos. Aparte de la relación publicada, no he visto un ejemplo sencillo usando QGraphicsView.

40000 chips también muestra algunas cosas acerca la gestión de grandes cantidades de datos.

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