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);
          painter->drawRect(rect);
    }
    
    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
      setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
      if (angle > 0)
      {
          qDebug()<<"Zoom in";
          scale(scaleFactor, scaleFactor);
      }
      else
      {
          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. 
          _square->update(); 
    }
    

    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
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.