Search code examples
qtqt4

Zooming function on a QWidget


I have a QWidget where I am drawing some lines and I would like to enable/implement a zooming function so as to better see the picture which I am drawing. And I want to connect that to the mouse wheel just like in the normal browsers when you can zoom in and out by pressing the 'ctrl' key and turning the mouse wheel.

Is there a default function for that? I tried searching for some examples but without any luck. So how can I do that?


Solution

  • Try to reimplement your paintEvent , and apply scale to QPainter before drawing.

    class YourClass:public QWidget
    {
    ...
      protected:
         void paintEvent ( QPaintEvent * event );
         void wheelEvent ( QWheelEvent * event );
      private:
         qreal scale;
    };
    
    void YourClass::paintEvent ( QPaintEvent * event )
    {
        QPainter p;
        p.scale(scale,scale);
    // paint here
    }
    void YourClass::wheelEvent ( QWheelEvent * event )
    {
        scale+=(event->delta()/120); //or use any other step for zooming 
    }