图形/视图架构的坐标系

图形/视图架构有 3 个有效的坐标系:场景坐标系、视图坐标系、图形项坐标系。

视图坐标系

视图坐标系就是视图组件的物理坐标系,单位是像素。QGraphicsView 视口的左上角坐标总是(0,0)。

场景坐标系

场景坐标系定义了所有图形项的基础坐标,场景坐标系描述了每个顶层图形项的位置。

scene= new QGraphicsScene(-400,-300,800,600);

定义了一个左上角坐标为(-400,-300)、宽度为 800 像素、高度为 600 像素的矩形区
域,单位是像素。

图形项方法-QGraphicsIteml类

图形项属性void setFlags()
void setFlag()
void setOpacity()
qreal opacity()
void setGraphicsEffect()
void setSelected()
bool isSelected()
void setData()
void setEnabled()
bool isEnabled()
void show()
void hide() 
设置图形项的操作标志,例如可选择、可移动等
启用或禁用图形项的某个标志
设置透明度
返回图形项的透明度, 0 表示透明, 1 表示完全不透明
设置图形效果
设置图形项是否被选中
图形项是否被选中
设置用户自定义数据
启用或禁用图形项。禁用的图形项是可见的,但是不能接收任何事件
返回图形项的使能状态
显示图形项
隐藏图形项
bool isVisible() 图形项是否可见
void setX() 设置图形项的 x 坐标
坐标void setY()
void setZValue()
void setPos() 
设置图形项的 y 坐标
设置图形项的
Z 值, Z 值控制图形项的叠放次序
设置图形项在父图形项中的位置
QPointF scenePos() 返回图形项在场景中的坐标,相当于调用函数 mapToScene(0, 0)
void resetTransform() 复位坐标系,取消所有坐标变换
坐标变换 void setRotation() 旋转一定角度,参数为正数时表示顺时针旋转
void setScale() 按比例缩放,默认值为 1
QPointF mapFromItem()
QPointF mapFromParent()
QPointF mapFromScene()
QPointF mapToItem()
QPointF mapToParent() 
将另一个图形项的一个点映射到本图形项的坐标系中
将父图形项的一个点映射到本图形项的坐标系中
将场景中的一个点映射到本图形项的坐标系中
将本图形项的一个点映射到另一个图形项的坐标系中
将本图形项的一个点映射到父图形项的坐标系中
坐标映射QPointF mapToScene() 将本图形项的一个点映射到场景坐标系中

场景事件、方法-QGraphicsScene 类

void setSceneRect() 设置场景的矩形区域
void setBackgroundBrush() 设置场景的背景画刷
void setForegroundBrush() 设置场景的前景画刷
场景 void update() 刷新场景显示内容
分组QGraphicsItemGroup* createItemGroup() 创建图形项组
void destroyItemGroup() 解除一个图形项组
QGraphicsItem* focusItem() 返回当前获得焦点的图形项
输入焦点void clearFocus() 清除选择的焦点
bool hasFocus() 场景是否有焦点
void addItem() 添加或移动一个图形项到场景里
void removeItem() 删除一个图形项
void clear() 清除场景中的所有图形项
QGraphicsItem* mouseGrabberItem() 返回用鼠标抓取的图形项
QList<QGraphicsItem *> selectedItems() 返回选择的图形项列表
void clearSelection() 清除所有选择
图形项操作QGraphicsItem * itemAt() 获取某个位置的顶层图形项
QList<QGraphicsItem *> items() 返回某个矩形区域、多边形等选择区域内的图形项列表
QGraphicsEllipseItem * addEllipse()
QGraphicsLineItem
* addLine()
QGraphicsPathItem
* addPath()
QGraphicsPixmapItem
* addPixmap()
QGraphicsPolygonItem
* addPolygon()
QGraphicsRectItem
* addRect()
QGraphicsSimpleTextItem
* addSimpleText()
QGraphicsTextItem
* addText() 
创建并添加一个椭圆到场景里
创建并添加一条直线到场景里
创建并添加一条绘图路径( QPainterPath 对象)到场景里
创建并添加一个
pixmap 图片到场景里
创建并添加一个多边形到场景里
创建并添加一个矩形到场景里
创建并添加一个
QGraphicsSimpleTextItem 对象到场景里
创建并添加一个字符串到场景里
添加图形项QGraphicsProxyWidget * addWidget() 创建并添加一个 QGraphicsProxyWidget 对象到场景里

视图事件、方法-QGraphicsView类

设置场景void setScene() 设置关联显示的场景
void setSceneRect() 设置场景在视图中可视部分的矩形区域
外观void setAlignment() 设置场景在视图中的对齐方式,默认是上下都居中
void setBackgroundBrush() 设置关联场景的背景画刷
void setForegroundBrush() 设置关联场景的前景画刷
 void setRenderHints() 设置视图的绘图选项
void setInteractive()
QRect rubberBandRect()
void setRubberBandSelectionMode()
QGraphicsItem* itemAt() 
设置是否允许场景交互,若禁止交互,则任何键盘或鼠标操作都被忽略
返回选择的矩形框
选择模式,参数为枚举类型 Qt::ItemSelectionMode
获取视图坐标系中某个位置的图形项
交互QList<QGraphicsItem*> items() 获取场景中的所有图形项或者某个选择区域内图形项的列表
void centerOn() 移动视口中的内容,使得场景中的某个坐标点位于视图的中央
场景显示 void ensureVisible() 移动视口中的内容,确保场景中的某个矩形区域可见
void fitInView() 视图缩放并移动卷滚条,确保场景中的某个矩形区域显示在视口中
void translate()视图坐标系平移
void scale() 视图坐标系缩放
void rotate() 视图坐标系旋转
坐标变换 void shear() 视图坐标系扭转
QPoint mapFromScene() 将场景中的一个坐标映射为视图中的坐标
坐标映射QPointF mapToScene() 将视图中的一个坐标映射为场景中的坐标


 

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

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

相关文章

如何排查GD32 MCU复位是由哪个复位源导致的?

上期为大家讲解了GD32 MCU复位包括电源复位和系统复位&#xff0c;其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等&#xff0c;在一个GD32系统中&#xff0c;如果莫名其妙产生了MCU复位&#xff0c;如何排查具体是由哪个复位源导致的呢&#xff1f; GD32 MC…

Idea如何查看Maven依赖树

1、使用idea自带的功能查看依赖树 2、使用Maven Helper插件 https://zhuanlan.zhihu.com/p/699663369

《Milvus Cloud向量数据库指南》——监管机构和社区:开源许可证标准的守护者与推动者

在开源软件的浩瀚宇宙中,监管机构和社区构成了其稳定运行与持续发展的双轮驱动。这些组织不仅定义了开源的本质,还通过制定、维护和执行许可证标准,确保了开源生态的开放性、透明性和协作精神得以传承。其中,开源倡议组织(OSI)、自由软件基金会(FSF)以及Apache软件基金…

【STM32】IIC学习笔记

学习IIC 前言一、基础知识GPIO_WriteBit 写入高低电平 二、放代码三、逐行细读总结 前言 最近沉迷手写笔记~ 尝试解读江科大的IIC程序&#xff0c;结合笔记更理解IIC 一、基础知识 GPIO_WriteBit 写入高低电平 二、放代码 这个是江科大的软件IIC的设置部分 #include "s…

正点原子 通用外设配置模型 GPIO配置步骤 NVIC配置

1. 这个是通用外设驱动模式配置 除了初始化是必须的 其他不是必须的 2. gpio配置步骤 1.使能时钟是相当于开电 2.设置工作模式是配置是输出还是输入 是上拉输入还是下拉输入还是浮空 是高速度还是低速度这些 3 和 4小点就是读写io口的状态了 3. 这个图是正点原子 将GPIO 的时…

Axure设计之轮播图(动态面板+中继器)

轮播图&#xff08;Carousel&#xff09;是一种网页或应用界面中常见的组件&#xff0c;用于展示一系列的图片或内容&#xff0c;通常通过自动播放或用户交互&#xff08;如点击箭头按钮&#xff09;来切换展示不同的内容。轮播图能够吸引用户的注意力&#xff0c;有效展示重要…

全能数据分析工具:Tableau Desktop 2019 for Mac 中文激活版

Tableau Desktop 2019 一款专业的全能数据分析工具&#xff0c;可以让用户将海量数据导入并记性汇总&#xff0c;并且支持多种数据类型&#xff0c;比如像是编程常用的键值对、哈希MAP、JSON类型数据等&#xff0c;因此用户可以将很多常用数据库文件直接导入Tableau Desktop&am…

Django Web开发:构建强大RBAC权限管理系统的实战指南

文章目录 前言一、rbac 基于角色的权限管理1.acl 基于用户的权限管理2.rbac 基于角色的权限管理 二、应用示例1.配置角色资源a.分析表b.核心逻辑c.使用transfer在前端实现资源配置d.页面效果 2.登录时获取对应权限a.员工登录b.中间件c.前端请求d.效果图 3.前端-路由守卫-页面权…

GAT知识总结

《GRAPH ATTENTION NETWORKS》 解决GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同的问题&#xff0c;GAT借鉴了Transformer的idea&#xff0c;引入masked self-attention机制&#xff0c; 在计算图中的每个节点的表示的时候&#xff0c;会根据邻居节点特征的不同来…

解开基于大模型的Text2SQL的神秘面纱

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

JAVA基础 - 对象

目录 一. 简介 二. 空对象 三. 构造方法 四. 析构方法 五. this关键字 六. 对象销毁 一. 简介 在 Java 中&#xff0c;对象&#xff08;Object&#xff09;是面向对象编程的核心概念。 对象是类的实例化&#xff0c;它将数据&#xff08;属性&#xff09;和操作这些数据…

【运算放大器】输入失调电压和输入偏置电流(2)实例计算

概述 根据上一篇文章的理论&#xff0c;分别计算没有输入电阻和有输入电阻两种情况下的运放总输出误差。例题来自于TI高精度实验室系列课程。 目录 概述实例计算 1&#xff1a;没有输入电阻实例计算 2&#xff1a;有输入电阻总结 实例计算 1&#xff1a;没有输入电阻 要求&am…

通过IEC104转MQTT网关对接阿里云、华为云、亚马逊AWS、ThingsBoard、Ignition、Zabbix

随着工业互联网的快速发展&#xff0c;传统电力系统中的IEC 104协议设备正逐步向更加开放、灵活的物联网架构转型。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;作为一种轻量级的消息传输协议&#xff0c;因其低带宽消耗、高可靠性和广泛的支持性&#xf…

vue3前端开发-小兔鲜项目-路由拦截器增加token的携带

vue3前端开发-小兔鲜项目-路由拦截器增加token的携带&#xff01;实际开发中&#xff0c;很多业务接口的请求&#xff0c;都要求必须是登录状态&#xff01;为此&#xff0c;这个token信息就会频繁的被加入到了请求头部信息中。request请求头内既然需要频繁的携带这个token.我们…

集团ERP信息化项目实施方案(82页PPT)

集团ERP信息化项目实施方案的82页PPT详尽阐述了企业资源规划&#xff08;ERP&#xff09;系统实施的全过程&#xff0c;旨在帮助集团整合多个业务流程于一个统一的平台。方案从当前市场环境分析入手&#xff0c;解释了ERP系统对于提升集团运营效率、降低成本和优化资源配置的必…

【OpenCV C++20 学习笔记】图片融合

图片融合 原理实现结果展示完整代码 原理 关于OpenCV的配置和基础用法&#xff0c;请参阅本专栏的其他文章&#xff1a;垚武田的OpenCV合集 这里采用的图片熔合的算法来自Richard Szeliski的书《Computer Vision: Algorithms and Applications》&#xff08;《计算机视觉&#…

STM32是使用的内部时钟还是外部时钟

STM32是使用的内部时钟还是外部时钟&#xff0c;经常会有人问这个问题。 1、先了解时钟树&#xff0c;见下图&#xff1a; 2、在MDK中&#xff0c;使用的是HSEPLL作为SYSCLK&#xff0c;因此需要对时钟配置寄存器&#xff08;RCC_CFGR&#xff09;进行配置&#xff0c;寄存器内…

Eaton伊顿触摸屏维修XV-303-15-C00-A00-1C

伊顿触摸屏维修,工业触摸屏维修,主板维修,坏高故障,损坏显示,不损坏,运行稳定,不花屏,无反应慢等故障维修,维修有保障,资费低.,触摸屏主板坏,高压板故障,按键损坏等均可修理。 伊顿触摸屏维修 EATON触摸屏维修 伊顿工控机维修 EATON工控机维修 伊顿人机界面维修 EATON触摸屏维…

深度解读大语言模型中的Transformer架构

一、Transformer的诞生背景 传统的循环神经网络&#xff08;RNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;在处理自然语言时存在诸多局限性。RNN 由于其递归的结构&#xff0c;在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…

【机器学习】用Jupyter Notebook实现并探索单变量线性回归的代价函数以及遇到的一些问题

引言 在机器学习中&#xff0c;代价函数&#xff08;Cost Function&#xff09;是一个用于衡量模型预测值与实际值之间差异的函数。在监督学习中&#xff0c;代价函数是评估模型性能的关键工具&#xff0c;它可以帮助我们了解模型在训练数据上的表现&#xff0c;并通过优化过程…