Pregunta

Me gustaría escribir un navegador activo usando QGraphicsView. Es un poco diferente de los ejemplos que utilizan QGraphicsView y QGraphicsItems, porque quiero solamente una barra de desplazamiento y quiero prendas se muevan de forma automática, cuando cambia el tamaño de la ventana gráfica. Por ejemplo, cuando el ancho ventana gráfica es lo suficientemente grande para mostrar 4 asssets, se deben mostrar como esto:

aaaa
aaaa
aa

pero cuando la ventana gráfica se achica y sólo puede contener 3 en una fila, debería mostrar como esto:

aaa
aaa
aaa
a

No me gustaría tener que mover los activos para mí mismo y dejar que los gráficos ver gestionarlos todos. ¿Es posible de alguna manera?

He escrito una vez que tal cosa, pero utilizando QWidget y paintEvent, dibujo todos los activos mí mismo y hacer el seguimiento de cuántos activos se pueden mostrar en una fila. ¿Se puede hacer más simple con QGraphicsView?

¿Fue útil?

Solución

QGraphicsView soporta diseños. Lo que tienes que hacer es poner en práctica su propio controlador de distribución, que hereda de QGraphicsLayout.

Para ver la disposición que requiere, a echar un vistazo al ejemplo de diseño de flujo de Qt. Convertir ese ejemplo le dará una QGraphicsFlowLayout. Añadir sus QGraphicsItems a esta disposición y establecer la disposición de su QGraphicsView a esa disposición, y que podría hacer el truco.

Otros consejos

Me suena desea una lista, no es una vista gráfica. Una lista puede ser configurado para mostrar cosas envolver alrededor como usted desea. Vea la ejemplo rompecabezas , prestando atención a la lista de piezas del rompecabezas de la izquierda . Se ve bastante fácil de configurar para el caso presentado.

Por supuesto, si usted realmente quiere que en una vista gráfica, supongo que se podría añadir una lista a la vista y utilizarla allí.

Me gustaría utilizar un diseño personalizado para hacer esto. Trate de crear la clase de diseño personalizado que hereda de QGraphicsLayout y gestionar la forma en que está poniendo artículos.

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