1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item

Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item

时间:2019-09-09 10:54:24

相关推荐

Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item

首先自己subclass QGraphicsView的一个类,叫DiagramView,然后重新实现它的滚轮事件函数,然后发送一个缩放信号:

1 oid DiagramView::wheelEvent(QWheelEvent * event){ 2 3if (event->delta() > 0) 4{ 5 emit mouseWheelZoom(true); 6} 7else 8{ 9 emit mouseWheelZoom(false);10}11 12 }

View Code

然后用connect把这个信号连接到要实现的槽函数上(ScaleFactor初始化为30):

1 void TopologyEditor::Zoom(bool zoom){ 2 34 56 7if (zoom && scaleFactor >= 0) 8{ 9 10 scaleFactor += 10;11 QMatrix old_matrix;12 old_matrix = view->matrix();13 view->resetMatrix();14 view->translate(old_matrix.dx(), old_matrix.dy());15 view->scale(scaleFactor/100.0, scaleFactor/100.0);16}17else if (!zoom && scaleFactor >= 0)18{19 scaleFactor -= 10;20 QMatrix old_matrix;21 old_matrix = view->matrix();22 view->resetMatrix();23 view->translate(old_matrix.dx(), old_matrix.dy());24 25 view->scale( scaleFactor/100.0, scaleFactor/100.0);26 27}28 29else if (scaleFactor < 0){3031 scaleFactor = 0.0;32}33 34 }

View Code

references:

/questions/19113532/qgraphicsview-zooming-in-and-out-under-mouse-position-using-mouse-wheel

/threads/52603-Zoom-effect-by-mouse-Wheel-in-QGraphicsview

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。