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?
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
}
I used this solution before and I have to say that is obsoleted in the las Qt versions. To create this function is all the same except " event->delta()", now it is written "event->angleDelta().y()"
精彩评论