图形/视图架构的坐标系

图形/视图架构有 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

docker -v 到底和那个一样?type=volume还是type=bind的解释

逐行通俗详细的解释下这个代码“#!/usr/bin/env bash # # This script will automatically pull docker image from DockerHub, and start a daemon container to run the Qwen-Chat web-demo.IMAGE_NAMEqwenllm/qwen:2-cu121 QWEN_CHECKPOINT_PATH/path/to/Qwen-Instruct PORT…

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

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

【STM32】IIC学习笔记

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

【C++】C++中查找并替换字符串中的特定单个字符、多个字符、中文字符

目录 一.替换单个字符 方法1&#xff1a;使用循环遍历字符串 方法2&#xff1a;使用 std::replace 算法 二.替换字符串中的中文字符 1.检查字符串中是否包含中文逗号 2.替换字符串中的中文逗号 3.遍历字符串并打印中文逗号 三.替换字符串中的多个字符 一.替换单个字符 …

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

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

mysql中提供的函数

文章目录 1.聚合函数2.字符串函数3.数值函数4.日期函数5.流程函数 MySQL 是一个功能强大的关系型数据库管理系统&#xff0c;其中包含了丰富的内置函数&#xff0c;用于处理各种数据操作和查询。这些函数可以分为多种类型&#xff0c;包括字符串函数、数值函数、日期和时间函数…

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

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

SQL Server流量分析

SQL Server流量分析涉及监控和分析SQL Server数据库服务器的网络通信量、操作性能、资源使用和安全性&#xff0c;以确保数据库的高效运行和安全。SQL Server流量分析可以帮助你识别潜在的性能瓶颈、异常行为和安全威胁&#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; 文章目录 一…

C++ STL set_difference 用法

一&#xff1a;功能 给定两个集合A&#xff0c;B&#xff1b;计算集合的差集&#xff0c;即计算出那些只包含在A中而不包含在B中的元素。 二&#xff1a;用法 #include <vector> #include <algorithm> #include <iostream>int main() {std::vector<int&…

JAVA基础 - 对象

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

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

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

使用SpringBoot集成Hibernate实现对数据库表CURD操作

Hibernate概述 Hibernate是一个开源的对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它提供了自动将Java对象映射到关系数据库表的功能&#xff0c;使得开发者可以通过面向对象的方式操作数据库&#xff0c;避免了直接使用SQL语句操作数据库的复杂性。Hibernate提供…

PyQt 信号与槽功能

PyQt 信号与槽功能 基本概念&#xff1a;在 PyQt 中&#xff0c;信号&#xff08;Signal&#xff09;与槽&#xff08;Slot&#xff09;是一种用于对象之间通信的机制。信号可以由一个对象发出&#xff0c;而槽是用于接收信号并执行相应操作的函数。 信号 信号是在 PyQt 的类…

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

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