How to stretch scene to fit graphics view?
Asked Answered
F

3

10

I am using Qt and C++ as my environment.

I draw a QGraphicsView in my UI, then create a scene and add lines to that it.

I run through an array of 5000 points and draw lines connecting each point.

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++;
}

The problem is that the numbers I am grabbing are very small. e.g., 2.000e-12. The numbers will consistently change based on the application.

How can I adjust my scene to stretch to fill my QGraphicsView.

Now, all I see is a dot in the center of my view.

Fabliau answered 15/10, 2010 at 13:18 Comment(0)
C
11

Using sceneRect of your QGraphicsScene in QGraphicsView::fitInView() will do the zoom-to-fit for you.

Communal answered 15/10, 2010 at 14:2 Comment(0)
S
1

I never used it myself, but in Qt doc there is a

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

that allows you to scale your view in the x and y axis. If it is not sufficient, you could (if it is possible in your project) zoom manually when the values are too small or too big, when you draw your lines and apply this same factor to everything else. But if it is possible, I would go with the scale method included in Qt.

Hope this helps.

Scrouge answered 15/10, 2010 at 13:32 Comment(0)
I
0

check whether this code helps. It just fits the image on 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());
Ivonne answered 4/3, 2011 at 13:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.