qgraphicsitem位置返回零

时间:2015-05-28 14:29:42

标签: qt pyqt qgraphicsview qgraphicsitem

我对Qt如何在我的自定义元素上存储位置感到困惑。我继承自QGraphicsRectItem,我看到" Page"图形视图中的项目,但我注意到当我尝试从pos()或scenePos()访问它们的位置时,它们都返回(0,0),即使它们都在视图中的不同位置。我不确定我是否完全误解了一切的相对位置,但我认为这两个函数中至少有一个会返回不同的东西。

class Page(QtGui.QGraphicsRectItem):
    def __init__(self, x, y):
        super(Page, self).__init__(x, y, 80, 20)

class Workspace(QtGui.QGraphicsScene):
    def __init__(self, parent):
        super(Workspace, self).__init__(parent)

        page1 = Page(0, 0)
        self.addItem(page1)

        page2 = Page(100, 100)
        self.addItem(page2)

        page2.pos()      # returns (0,0)
        page2.scenePos() # returns (0,0)

1 个答案:

答案 0 :(得分:1)

QGraphicsRectItem绘制的矩形与项目的位置无关 - 没有可用于设置位置的构造函数。

您正在做的是创建位于(0,0)的QGraphicsRectItem,但在项目坐标中绘制一个矩形(100,100),从而产生一个(0,0,180,120)的边界矩形。

您需要在 item 坐标中创建矩形,然后使用setPos(..)移动项目。