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

本文介绍了一种在Qt中使用QGraphicsView实现鼠标滚轮缩放的方法。通过自定义DiagramView类并重写滚轮事件,根据滚轮方向改变缩放比例。同时提供了与缩放信号对应的槽函数实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

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

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

 

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

 1 void TopologyEditor::Zoom(bool zoom){
 2 
 3     
 4 
 5     
 6 
 7     if (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     }
17     else 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 
29     else if (scaleFactor < 0){
30     
31         scaleFactor = 0.0;
32     }
33 
34 }
View Code

 

 

 

references:

http://stackoverflow.com/questions/19113532/qgraphicsview-zooming-in-and-out-under-mouse-position-using-mouse-wheel

http://www.qtcentre.org/threads/52603-Zoom-effect-by-mouse-Wheel-in-QGraphicsview

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值