当前位置: 首页 > 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博客

更有助于理解。


http://www.mrgr.cn/news/94039.html

相关文章:

  • 【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据
  • 【Yonghong 企业日常问题07 】 东方通TongWeb替代Tomcat的实战指南!
  • 如何使用logrotete定时切割mysql的慢日志
  • Android DUKPT - 3DES
  • shell编程——条件表达式和if判断
  • liunx磁盘挂载和jar启动命令
  • Vue3项目-大事件
  • 在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
  • 瑞芯微RK3576(2)-调试过程中遇到的问题
  • 使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)
  • 制作自定义镜像
  • 【OpenGL】01-配置环境
  • react中字段响应式
  • 安装、配置和启动 ssh 服务,实现远程连接服务器
  • SVT-AV1源码分析函数 svt_av1_optimize_b
  • c++ constraints与concepts使用笔记
  • 如何用HTML5 Canvas实现电子签名功能✍️
  • 全网最详解答OSPF基础
  • 我与DeepSeek读《大型网站技术架构》(10)- 维基百科的高性能架构设计分析
  • C# Enumerable类 之 数据分组