QT QGraphicsView 在鼠标点击处进行放大缩小

news2025/1/18 5:09:22

一、前段时间在用QGraphicsView对图元进行放大缩小时,发现图形总是越来越跑偏,无法像地图中那样,点击哪里就能放大哪个地方。
如下所示:此时放大缩小的焦点并不在鼠标位置

方法,使用QGraphicsView类的设置属性函数.在构造函数中增加下面两个函数即可。

ui.View_ImageOpro->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
ui.View_ImageOpro->setResizeAnchor(QGraphicsView::AnchorUnderMouse);

此时以鼠标为中心的效果就出来了:

完整代码:

MyGraphicsView::MyGraphicsView()
{   
    //设置ui控件属性
    setDragMode(QGraphicsView::NoDrag);//(QGraphicsView::RubberBandDrag);//QGraphicsView::ScrollHandDrag
    scale_m = 1;//图形原始比例
    setStyleSheet("padding: 0px; border: 0px;");//无边框
    setMouseTracking(true);//跟踪鼠标位置
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏水平条
    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏竖条
    setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
    setResizeAnchor(QGraphicsView::AnchorUnderMouse);
    
}
void MyGraphicsView::wheelEvent ( QWheelEvent * event )
{
    if (event->modifiers() == Qt::CTRL)
    {//按住ctrl键 可以放大缩小
        if((event->delta() > 0)&&(scale_m >= 50))//最大放大到原始图像的50倍
        {
            return;
        }
        else if((event->delta() < 0)&&(scale_m <= 0.01))//图像缩小到自适应大小之后就不继续缩小
        {
            return;//重置图片大小和位置,使之自适应控件窗口大小
        }
        else
        {
            // 当前放缩倍数;
            qreal scaleFactor = this->matrix().m11();
            scale_m = scaleFactor;
            
            int wheelDeltaValue = event->delta();
            // 向上滚动,放大;
            if (wheelDeltaValue > 0)
            {
                this->scale(1.2, 1.2);
            }
            else
            {// 向下滚动,缩小;
                this->scale(1.0 / 1.2, 1.0 / 1.2);
            }
            update();
        }
    }    
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1533970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蜂窝物联智慧果园案例:福建万春寨农业科技有限公司醒狮智慧芦柑园

项目背景 永春醒狮农场前身永春醒狮场是永春最早种植芦柑基地之一&#xff0c;十年前因为黄龙病全部死亡。今年由万春寨农业牵头&#xff0c;重新开荒种植芦柑。此地&#xff0c;虽然海拔高、树木葱郁&#xff0c;然后可用灌溉水源却非常缺乏&#xff0c;如何实现节水灌溉问题成…

GRE简介

定义 通用路由封装协议GRE&#xff08;Generic Routing Encapsulation&#xff09;可以对某些网络层协议&#xff08;如IPX、IPv6、AppleTalk等&#xff09;的数据报文进行封装&#xff0c;使这些被封装的数据报文能够在另一个网络层协议&#xff08;如IPv4&#xff09;中传输…

vm-workstation win10 网络的设置

设置宿主机网络&#xff08;win10&#xff09; 1&#xff0c;在 win10宿主机上为虚拟机设置192.168.6.0/24 的网段 VM-workstation 网络设置 2&#xff0c;vm-workstation 软件设置

工控机丨丨工业电脑丨工控计算机丨工业一体机丨什么是工业一体机

工业一体机俗称工控机&#xff0c;是一种专门为工业应用而设计的计算机设备&#xff0c;主要应用于工厂、车间、仓库等工业场所。此外工控机还叫做工控计算机&#xff0c;通常采用工业级主板、工业级CPU、工业级硬盘、工业级内存和工业级电源等硬件组件&#xff0c;以确保其在高…

NetSuite 固定资产Write-Off的撤回操作

之前我们有说到如果是Sale了固定资产后发现有误&#xff0c;需要撤回操作该如何处理。这篇文章来补充一下&#xff0c;如果是误Write-Off了一个固资该如何处理&#xff0c;其逻辑与Sale的撤回基本一致&#xff0c;但是少了删除Sale Invoice的步骤。 我们用一个实际的例子来进行…

ISIS默认层级实验简述

ISIS被划分为三个层级&#xff1a;Level 1、Level 2和Level 1-2。 默认情况下&#xff0c;ISIS路由器属于level 1-2,是指同时支持Level 1和Level 2的路由器。路由器既可以在同一个自治系统内部进行路由选择&#xff0c;也可以将路由信息传递到其他自治系统。 实验拓扑图&#…

鸿蒙一次开发,多端部署(一)简介

背景 随着终端设备形态日益多样化&#xff0c;分布式技术逐渐打破单一硬件边界&#xff0c;一个应用或服务&#xff0c;可以在不同的硬件设备之间随意调用、互助共享&#xff0c;让用户享受无缝的全场景体验。而作为应用开发者&#xff0c;广泛的设备类型也能为应用带来广大的…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说&#xff0c;当然这块内容也比较简单&#xff0c;就是当我们有一段完整素材时&#xff0c;如下: 我在网上随便找的素材&#xff0c;当然我们平时在使用素材时要注意尊重他人的著作权&#xff0c;不管是字体图片还是别的&#xff0c;不然后面不小心侵…

20岁小姑娘 半年用消费返现模式 做了2000多万销售额!!

一个年仅十几岁的小姑娘&#xff0c;仅凭一套价值1900元的化妆品&#xff0c;在短短27天内便创下了高达2000多万元的销售额&#xff0c;这听起来似乎有些不可思议。然而&#xff0c;她确实做到了&#xff0c;那么&#xff0c;她究竟是如何做到的呢&#xff1f; 答案其实并不复杂…

使用aop做权限控制

1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:/…

快速画流程图

使用在线工具&#xff1a;PlantUML PlantUML 官网:https://plantuml.com/ 中文官网:https://plantuml.com/zh/ 使用步骤如下&#xff1a; 1、拷贝一个完成函数&#xff1a; int func_init(const char *tag) {if (tag ! NULL) {printf("set TAG :%s", tag);}print…

固定资产管理系统有哪些应用价值

固定资产管理已成为当今企业经营中不可忽视的重要环节。伴随着时代的发展&#xff0c;固定资产管理系统的出现&#xff0c;为企业提供了一种高效、精确的管理方式。那固定资产管理系统实际有什么实际意义呢&#xff1f;本文将从以下几个方面进行讨论。  固定资产管理系统可以…

Python入门操作学习记录

图行画程序设计--海龟绘图 1、爱心 import turtle turtle.showturtle() turtle.width(20) turtle.write("c的弃子") turtle.color("red") turtle.left(50) turtle.forward(250) turtle.goto(60,300) turtle.goto(0,225) turtle.left(83) turtle.forward(…

户外LED显示屏的10大技术参数详解

随着户外广告市场需求的不断提升&#xff0c;LED显示屏作为一种重要的广告传播媒介&#xff0c;其应用范围和技术水平也在不断提高。然而&#xff0c;在众多LED显示屏品牌中如何选购到满意的产品成为行业用户关注的焦点。了解LED显示屏的各项技术参数是选择合适产品的首要步骤。…

Docker专题-04 Nginx部署

Docker专题-04 Nginx部署 注&#xff1a; 本教程由羞涩梦整理同步发布&#xff0c;本人技术分享站点&#xff1a;blog.hukanfa.com 转发本文请备注原文链接&#xff0c;本文内容整理日期&#xff1a;2024-03-21 csdn 博客名称&#xff1a;五维空间-影子&#xff0c;欢迎关注…

中文数字与阿拉伯数字:数字符号的文化交融

title: 中文数字与阿拉伯数字&#xff1a;数字符号的文化交融 date: 2024/3/21 17:46:31 updated: 2024/3/21 17:46:31 tags: 数字起源符号系统差异中文数字特点阿拉伯数字优势转换技术应用文化交流融合数字表达互通 中文数字与阿拉伯数字的关系起源&#xff1a; 中文数字是古…

【C++庖丁解牛】面向对象的三大特性之一多态 | 抽象类 | 多态的原理 | 单继承和多继承关系中的虚函数表

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1. 多态的概念1.1 概…

ServletConfig和ServletContext

ServletConfig接口 在Servlet运行期间&#xff0c;需要一些配置信息&#xff0c;这些信息都可以在WebServlet注解的属性中配置。当Tomcat初始化一个Servlet时&#xff0c;会将该Servlet的配置信息封装到一个ServletConfig对象中&#xff0c;通过调用init(ServletConfig config…

@Autowired详解

请直接看原文: Autowired注解详解——超详细易懂-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- Autowired详解 要搞明白Autowired注解就是要了解它是什么&#xff1f;有…

【蓝桥杯备赛】Day15:递推与递归(倒计时23天)

题目1:题目 2335: 信息学奥赛一本通T1422-活动安排 设有n个活动的集合E{1,2,…,n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;如演讲会场等&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi…