视图的缩放:
对视图进行缩放,主要是重写wheelEvent事件
void Myview::wheelEvent(QWheelEvent *event)//重写滚轮事件
{
qreal factor_out = transform().scale(1.2, 1.2).mapRect(QRectF(0,0,1,1)).width();
qreal factor_in=transform().scale(1/1.2,1/1.2).mapRect(QRectF(0,0,1,1)).width();
if(event->delta()>0){
if(factor_out>70) return;//防止视图过大
scale(1.2,1.2);//放大
}
else if(event->delta()<0){
if(factor_in<0.1)return;//防止视图过小
scale(1/1.2,1/1.2);//缩小
}
}
为了改善缩放效果,以鼠标为中心进行缩放,则需要添加以下代码:
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
视图的平移:
实现视图的平移要比缩放复杂一些,需要重写三个鼠标事件:mousePressEvent、mouseMoveEvent、mouseReleaseEvent。
大概过程如下:(1)按下:鼠标左键->改变光标、触发平移信号(bool值为真)->记录鼠标按下的初始坐标
(2)移动:接收到平移