Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item
首先自己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相关推荐
- 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )
文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...
- Cesium 鼠标滚轮事件获取地图缩放等级
const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); //监听鼠标滚轮事件handler.setInputA ...
- html 页面缩放事件,使用HTML5实现通过鼠标滚轮事件放大和缩小图片的功能
您和我都知道,向HTML5网页添加鼠标滚轮事件可以更好地允许用户与网页进行交互. 在HTML5中,鼠标滚轮不仅可以在网页上上下滑动,实际上,您还可以依靠它来完成更,例如放大和缩小视图平面. 看看实际的 ...
- Python+matplotlib响应鼠标滚轮事件调整图形大小
2021年全国高校Python课程高级研修班(线上) 中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN ...
- winform 以光标指向点为中心 通过鼠标滚轮对图片进行缩放
最近一个项目需要涉及到图片的全屏显示以及缩放拖动功能,其中缩放实现需要考虑的一点就是为了有更好的用户体验,需要在缩放的时候以光标所处位置为参考点,进行缩放操作,简单来说就是,缩放前后光标在图片上所处的 ...
- java响应鼠标滚轮事件_鼠标滚轮事件MouseWheel
其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+,Chrome)中,都提供了 "mousewheel" 事件.但杯具的是 Firefox ...
- JS 处理鼠标滚轮事件
为什么80%的码农都做不了架构师?>>> /* 鼠标滚轮事件 */ var onMouseScroll = function(e) {/* 向上滚为负数 */var direc ...
- android鼠标滚轮事件坐标,android 处理鼠标滚轮事件 【转】
android处理鼠标滚轮事件,并不是如下函数: 1) public boolean onKeyDown(int keyCode, KeyEvent event) 2) public boo ...
- java响应鼠标滚轮事件_一文读懂鼠标滚轮事件(wheelEvent)
最近在用VUE写一个后台管理系统,顶部标签页涉及鼠标滚轮事件,由于每个浏览器对滚轮事件的处理方式不一样,个人对这个又不懂,折腾了很久,参考了大神的代码,也把百度翻烂了,找到了一篇陈旧的博文(其实是主题 ...
最新文章
- 取代人类医生?AI给你做的诊断你敢信吗
- ue4中在物体上加ui_UE4 物体位置同步相关源码分析浅谈
- nginx upstream 模块详解
- FydeOS v11 发布,全新 Linux 终端提供更多功能
- 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
- 模拟简单 LeetCode6070. 计算字符串的数字和
- Windows API 获取所有进程音量并调节
- MySQL主从1205报错【转】
- JAVASCRIPT网页特效实例大全pdf
- sudo: no valid sudoers sources found, quitting
- 简记_硬件工程师解读RS-422/RS-485接口
- mysql中如何批量删除冗余数据库,删除WordPress数据库中的多余冗余数据
- widnows ,mongodb 复制代码,无法粘贴到cmd中
- python基础知识集(三)
- router link to
- 人工智能神经网络之父,神经网络是谁提出来的
- 32位微控制器 (MCU)STM32G081KBU6 128KB 闪存 32QFN
- 13 excel vba 多个区域选择 union range
- pycharm 使用 anaconda 环境
- 来自于电报群对David Cao的在线访谈 !