【问题标题】:QGraphicsScene set item scene positionQGraphicsScene 设置项目场景位置
【发布时间】:2018-02-22 17:33:33
【问题描述】:

我有一个包含 QGraphicsItems 层次结构的 QGraphicsScene。 方法 item.scenePos() 返回项目的场景坐标。 我正在寻找类似 setScenePos() 的东西,以便通过给它们场景坐标来改变项目的位置。 我怎样才能做到这一点?

【问题讨论】:

    标签: qt pyqt pyqt4 pyqt5


    【解决方案1】:

    正如docs 所说:

    QPointF QGraphicsItem::scenePos() const

    返回项目在场景坐标中的位置。这相当于调用 mapToScene(0, 0)。

    要得到你想要的,你可以做相反的事情

    # setScenePos(QPointF point)
    point = QPointF(xx, yy)
    point_item = item.mapFromScene(point)
    item.setPos(point_item)
    

    【讨论】:

    • 在场景中,我有一个项目的层次结构。我要更改的项目位于此层次结构的底部(场景->父级->父级->项目)。我应用了相同的方法: point = item.mapFromScene(point_from_scene) item.setPos(point) 项目的位置已更改,但位置错误。新位置与我提供的真实坐标不匹配。等级制度会对此产生影响吗?
    • @EugeniuZnagovan 可能是,我没有用层次结构测试它,因为项目的位置是相对于父项的,你可以提供你的问题的minimal reproducible example 以便能够测试我的代码。
    • @EugeniuZnagovan 可能是,你最好point = item.parentItem().mapFromScene(point_from_scene); item.setPos(point);。项目的本地坐标系是它的父项,不是吗。
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多