我有一个QWidget,我正在绘制一些线条,我想启用/实现缩放功能,以便更好地查看我正在绘制的图片。我想将它连接到鼠标滚轮,就像在普通浏览器中一样,当您可以通过按“ctrl”键并转动鼠标滚轮来放大和缩小。
是否有默认功能?我试着寻找一些例子,但没有任何运气。那我怎么能这样做呢?
答案 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()”