Utilización de los elementos en el fondo de un QGraphicsScene
-
22-09-2019 - |
Pregunta
Tengo un QGraphicsScene donde inicialmente dibujé el fondo en la función drawBackground (). Sin embargo, esto requiere un buen número de cálculos y resultó ser bastante lento así que creé un montón de artículos en su lugar. Esto tuvo el aumento de velocidad esperada.
Mi pregunta: ¿hay una manera de tratar estos artículos como el fondo? ¿Verdad siquiera importa si los trataba como artículos de fondo?
Gracias
Solución
Hay tres capas en términos de QGraphicsScene (ver docs Qt):
- QGraphicsScene :: ItemLayer
La capa de elemento. QGraphicsScene hace todos los artículos están en esta capa llamando los drawItems función virtual (). los capa de elemento se extrae después de la capa de fondo, pero antes de la primer plano de la capa.
- QGraphicsScene :: BackgroundLayer
La capa de fondo. QGraphicsScene hace que el fondo de la escena en este capa llamando a la función virtual drawBackground (). La capa de fondo se extrae primero de todas las capas.
- QGraphicsScene :: ForegroundLayer
La capa de primer plano. QGraphicsScene renders primer plano de la escena en este capa llamando a la función virtual drawForeground (). La capa de primer plano se dibuja la última de todas las capas.
Threrefore, no hay forma de legal para poner un elemento en la capa de fondo. Sin embargo, se puede usar QGraphicsItem Clasificación colocar algunos artículos detrás de otros, haciéndolos aparecer como un de fondo .