Search code examples
c++qtqpolygon

Scaling an already drawn QPolygonF in drawing


So, I draw a QPolygonF in an area which I define. The area inherits from QGraphicsView.

What I want to be able to do is let user move around the control points of QPolygonF and alter the polygon even after it has been created. I couldn't really find references to how I could do this.

Since I draw lines to close and denote the polygon, and there can me a lot more things in the drawable area, clearing it and drawing it over and over doesn't seem right.

Does anyone know how I could solve this ?

Thanks !


Solution

  • I'm a little confused as to why you describe that your 'area' inherits from QGraphicsView, but then discuss QPolygonF. If you're using QGraphicsView, that implies that you have a QGraphicsScene and would be using QGraphicsPolygonItem.

    However, with the assumption that the QGraphicsView is irrelevant here, QPolygonF is simply a class that inherits from a vector of points; QVector.

    You should be able to iterate through the points and just move them wherever you want. You can get a point like this: -

    QPolygonF poly; // assume it has been given a number of points
    QPointF& point = poly[index]; // where index is the index into the QVector of points
    

    Then you can move the point: -

    point.SetX(xPos);
    point.SetY(yPos);
    

    Redrawing the item as a point is moved should not be a problem.