Qt QWidget上的缩放功能

Qt QWidget上的缩放功能,qt,qt4,Qt,Qt4,我有一个QWidget,我正在画一些线,我想启用/实现一个缩放功能,以便更好地看到我正在画的图片。我想把它连接到鼠标滚轮上,就像在普通浏览器中一样,你可以通过按下“ctrl”键并转动鼠标滚轮进行放大和缩小 有默认的函数吗?我试图寻找一些例子,但没有任何运气。那么我该怎么做呢?尝试重新实现您的paintEvent,并在绘制之前对QPainter应用比例 class YourClass:public QWidget { ... protected: void paintEvent (

我有一个QWidget,我正在画一些线,我想启用/实现一个缩放功能,以便更好地看到我正在画的图片。我想把它连接到鼠标滚轮上,就像在普通浏览器中一样,你可以通过按下“ctrl”键并转动鼠标滚轮进行放大和缩小


有默认的函数吗?我试图寻找一些例子,但没有任何运气。那么我该怎么做呢?

尝试重新实现您的paintEvent,并在绘制之前对QPainter应用比例

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 
}

我以前使用过这个解决方案,我不得不说在las Qt版本中已经过时了。要创建这个函数是完全一样的,除了“事件-> DelTar()”之外,现在它被写为“事件-> angle DelTar())。()(

)可以考虑使用<代码> QScrollArea < /代码>。请看一下如何在
QScrollArea
中实现缩放,“正常”滚动结果为每步-+120,快速滚动结果为每步+-240或+-360。