QWidget上的缩放功能

时间:2011-07-11 12:41:28

标签: qt qt4

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

是否有默认功能?我试着寻找一些例子,但没有任何运气。那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:15)

尝试重新实现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 
}

答案 1 :(得分:-1)

我以前使用过这种解决方案,不得不说在las Qt版本中已经过时了。要创建此功能,除了“ event-> delta()”外,其他功能都相同,现在将其写为“ event-> angleDelta()。y()”