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

¿Fue útil?

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 .

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