2010-10-15 12 views
9

Ok, entonces estoy usando Qt y C++ como mi entorno.Escena de estiramiento de Qt GraphicsView para caber

Saco un QGraphicsView en mi IU.

Luego creo una escena y agrego líneas a esa escena. Corro a través de una matriz de 5000 puntos y dibujo líneas que conectan cada punto.

QGraphicsScene *scene = new QGraphicsScene(); 
QPen pen2 = QPen(Qt::blue, 8.0); 
int j=1; 
for (int i=1; i<5000; i++) 
{ 
    scene->addLine(xArray[i],yArray[i],xArray[j],yArray[j], pen2); 
    j++; 
} 

El problema es que los números que estoy agarrando son muy pequeños, p. 2.000e-12. Los números cambiarán consistentemente según la aplicación. ¿Cómo puedo ajustar mi escena para estirar para completar mi QGraphicsView. Ahora, todo lo que veo es un punto en el centro de mi vista. ¿Estoy teniendo sentido?

Respuesta

1

nunca he usado yo mismo, pero en Qt doc hay un

void QGraphicsView::scale (qreal sx, qreal sy) 

que le permite ampliar o reducir el punto de vista en el eje x e y. Si no es suficiente, podría (si es posible en su proyecto) hacer zoom manualmente cuando los valores son demasiado pequeños o demasiado grandes, cuando dibuje sus líneas y aplique este mismo factor a todo lo demás. Pero si es posible, elegiría el método de escala incluido en Qt.

Espero que esto ayude.

+0

esto no funciona para mí tampoco, y no puedo encontrar ninguna buena documentación en línea? ui-> graphicsView-> setSceneRect (x1, y1, x2, y2) ??? – JohnStudio

10

El uso de sceneRect de su QGraphicsScene en QGraphicsView::fitInView() hará que el zoom se adapte a usted.

+0

debe haber algo mal con mi sintaxis ?? ui-> graphicsView-> fitInView (escena-> sceneRect()); ¿¿no se?? – JohnStudio

+0

No estoy seguro de lo que quieres decir. ¿Recibió un error de compilación/tiempo de enlace o no hace zoom como lo desea? Más código y error/descripción serán más útiles. –

0

comprobar si este código ayuda. Simplemente se ajusta a la imagen en GraphicsView

m_Scene.setSceneRect(m_QImage.rect()); 

m_Scene.addPixmap(QPixmap::fromImage(m_QImage,0)); 

m_GraphicsView.setScene(&m_Scene); 

m_GraphicsView.fitInView(m_QImage.rect()); 
Cuestiones relacionadas