Important: Please read the Qt Code of Conduct -

QGraphicsView Scale / Zoom Issue & QGraphicsRectItem paint failed to called

  • My work Environment :Qt 5.8 MSVC2015 64bit, QT GraphicsView, QGraphicsRectItem, Windows 7 64 bit.

    Issues : When I zoom in & zoom out on GraphicsView, I call GraphicsView scale method. But When I add QGraphicsRectItem to scene it failed to call its paint method.

    my class hierarchy :

    class GraphicsView : public QGraphicsView
    class mySquare : public QObject, public QGraphicsRectItem
    class Scene : public QGraphicsScene

    Code :

    //////*****Draw Rect in QGraphicsRectItem *****////////////

    void mySquare::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
          QRectF rect(0,0,_width,_height);
    void GraphicsView::wheelEvent(QWheelEvent * event)
      int angle = event->angleDelta().y(); // angle will tell you zoom in or out.
      double scaleFactor = 1.15; //How fast we zoom
      if (angle > 0)
          qDebug()<<"Zoom in";
          scale(scaleFactor, scaleFactor);
          qDebug()<<"Zoom out";
          scale(1.0 / scaleFactor, 1.0 / scaleFactor);
          mySquare  _square = new mySquare(0,blankImage);
         _square->setPos(QPointF(0, 0));
    //Bug!!! Why after scale function call, _square failed to draw rect in paint method.
          _scene->addItem(_square);        //add square to scene. 

    my git code
    I spend days & hours but still not able to find out why it QGraphicsRectItem failed to print, when scale method get called. Any suggestion is highly appreciated ?

Log in to reply