当前位置: 首页 > news >正文

PySide(PyQT),QGraphicsRectItem的setPos()和setRect()的坐标位置的区别

首先要搞清楚以下的层次和位置关系  :

 self.setPos(x, y)

  • 作用:设置图形项(QGraphicsRectItem)在父项坐标系(本例即为场景)中的位置。
  • 参数说明
    • x:图形项左上角的 x 坐标(场景坐标系,相对于父项坐标系的原点)。
    • y:图形项左上角的 y 坐标(场景坐标系,相对于父项坐标系的原点)。
  • 效果:移动图形项在场景中的位置,但不会改变矩形的形状(显示的矩形框)的相对位置和大小。
  • 示例
    rect_item.setPos(50, 60)
    
    这行代码将 rect_item 的左上角移动到场景坐标系中的 (50, 60) 位置。

self.setRect(x, y, w, h)

  • 作用:设置显示的矩形框的几何形状,包括位置(相对于图形项的原点)和大小。
  • 参数说明
    • x:矩形左上角的 x 坐标(相对于图形项的原点)。
    • y:矩形左上角的 y 坐标(相对于图形项的原点)。
    • w:矩形的宽度。
    • h:矩形的高度。
  • 效果:改变矩形的形状和相对于图形项原点的位置。
  • 示例
    rect_item.setRect(0, 0, 120, 60)
    
    这行代码将 rect_item 的矩形的形状左上角设置为相对于图形项原点的 (0, 0) 位置,并设置矩形的宽度为 120,高度为 60。

初始化参数的含义

rect_item = QGraphicsRectItem(x, y, w, h)

        上述代码的含义是创建一个QGraphicsRectItem实例,并且等同于执行了setRect(0, 0, 120, 60),由于没有设置它的pos(),所以它在场景中的位置是(0, 0)。

rect()的含义

        即setRect()设定的参数,参照系仍然是相对于图形项原点的位置。

当鼠标拖动后的变化

当设置了:

self.setFlag(QGraphicsItem.ItemIsMovable, True)  # 设置可移动

 之后,用鼠标就可以将图形项QGraphicsRectItem在场景中拖动,拖动之后改变的是图形项的pos()参数,即他在父项坐标系的位置,本例中即为场景的坐标系。

pos()和scenePos()区别

进一步的,了解pos()和scenePos()区别:PySide(PyQT),QGraphicsItem的pos()和scenePos()区别-CSDN博客

更有助于理解。

相关文章:

  • Dynamics 365 新版的Power apps开发界面中如何找到开发者资源
  • WM_CREATE
  • nndl: chap1_warmup_numpy_tutorial
  • Java高频面试之集合-09
  • 【Python】dash-fastapi前后端搭建
  • QT多线程
  • 初级网工之路: 如何通过服务器进行交换机的配置
  • Faster R-CNN原理详解以及Pytorch实现模型训练与推理
  • 【NexLM 开源系列】让 AI 聊天更丝滑:SSE 实现流式对话!
  • 存储过程和自定义函数在银行信贷业务中的应用(oracle)
  • pop_dialog_state(state: State)弹出对话栈并返回到主助手,让整个对话流程图可以明确追踪对话流,并将控制权委派给特定的子对话图。
  • CHI协议中的read transaction flow
  • UDP-网络编程/socket编程
  • 【K8s】专题十六(3):Kubernetes 包管理工具之 Helm 语法
  • Excel 中如何实现数据透视表?
  • 信奥赛CSP-J复赛集训(模拟算法专题)(9):P6437 [COCI 2011/2012 #6] JACK
  • 数据库系统概论(二)数据模型
  • 记录--有惊无险
  • 产城融合典范:树莓科技如何助力宜宾数字经济腾飞​
  • 自启动、关联启动的拦截规则
  • 马克龙称法英正与乌克兰商议“在乌部署欧洲军队”
  • 中国工程院院士、国医大师石学敏逝世
  • 道指跌逾100点,特斯拉涨近5%
  • 西安机场回应航站楼“水帘洞”事件:屋面排水系统被冰雹堵塞
  • 习近平向中国人民解放军仪仗队致意
  • 近4小时会谈、3项联合声明、20多份双边合作文本,中俄元首今年首次面对面会晤成果颇丰