首先自己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

转载于:https://www.cnblogs.com/foohack/p/4536025.html

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

  1. 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...

  2. Cesium 鼠标滚轮事件获取地图缩放等级

    const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); //监听鼠标滚轮事件handler.setInputA ...

  3. html 页面缩放事件,使用HTML5实现通过鼠标滚轮事件放大和缩小图片的功能

    您和我都知道,向HTML5网页添加鼠标滚轮事件可以更好地允许用户与网页进行交互. 在HTML5中,鼠标滚轮不仅可以在网页上上下滑动,实际上,您还可以依靠它来完成更,例如放大和缩小视图平面. 看看实际的 ...

  4. Python+matplotlib响应鼠标滚轮事件调整图形大小

    2021年全国高校Python课程高级研修班(线上) 中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN ...

  5. winform 以光标指向点为中心 通过鼠标滚轮对图片进行缩放

    最近一个项目需要涉及到图片的全屏显示以及缩放拖动功能,其中缩放实现需要考虑的一点就是为了有更好的用户体验,需要在缩放的时候以光标所处位置为参考点,进行缩放操作,简单来说就是,缩放前后光标在图片上所处的 ...

  6. java响应鼠标滚轮事件_鼠标滚轮事件MouseWheel

    其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+,Chrome)中,都提供了 "mousewheel" 事件.但杯具的是 Firefox ...

  7. JS 处理鼠标滚轮事件

    为什么80%的码农都做不了架构师?>>>    /* 鼠标滚轮事件 */ var onMouseScroll = function(e) {/* 向上滚为负数 */var direc ...

  8. android鼠标滚轮事件坐标,android 处理鼠标滚轮事件 【转】

    android处理鼠标滚轮事件,并不是如下函数: 1)  public boolean onKeyDown(int keyCode, KeyEvent event) 2)     public boo ...

  9. java响应鼠标滚轮事件_一文读懂鼠标滚轮事件(wheelEvent)

    最近在用VUE写一个后台管理系统,顶部标签页涉及鼠标滚轮事件,由于每个浏览器对滚轮事件的处理方式不一样,个人对这个又不懂,折腾了很久,参考了大神的代码,也把百度翻烂了,找到了一篇陈旧的博文(其实是主题 ...

最新文章

  1. 取代人类医生?AI给你做的诊断你敢信吗
  2. ue4中在物体上加ui_UE4 物体位置同步相关源码分析浅谈
  3. nginx upstream 模块详解
  4. FydeOS v11 发布,全新 Linux 终端提供更多功能
  5. 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
  6. 模拟简单 LeetCode6070. 计算字符串的数字和
  7. Windows API 获取所有进程音量并调节
  8. MySQL主从1205报错【转】
  9. JAVASCRIPT网页特效实例大全pdf
  10. sudo: no valid sudoers sources found, quitting
  11. 简记_硬件工程师解读RS-422/RS-485接口
  12. mysql中如何批量删除冗余数据库,删除WordPress数据库中的多余冗余数据
  13. widnows ,mongodb 复制代码,无法粘贴到cmd中
  14. python基础知识集(三)
  15. router link to
  16. 人工智能神经网络之父,神经网络是谁提出来的
  17. 32位微控制器 (MCU)STM32G081KBU6 128KB 闪存 32QFN
  18. 13 excel vba 多个区域选择 union range
  19. pycharm 使用 anaconda 环境
  20. 来自于电报群对David Cao的在线访谈 !

热门文章

  1. miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看
  2. IDEA 配置 Docker
  3. springboot整合springSecurity使用
  4. 今年期末微积分考试试题:看看你能够在两个小时内做对几道题?
  5. 人工智能助力全国大学生智能车竞赛
  6. 智能车竞赛技术报告 | 智能车视觉 - 西安邮电大学 - AI小布丁
  7. 第十六届全国大学生广东赛区线上比赛流程规范
  8. 滴定数据处理结果分析
  9. 节能信标无线感应定位测试:200kHz
  10. Boston房价PaddlePaddle测试程序