qgraphicsitem 位置 return 零

qgraphicsitem positions return zero

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

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)

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

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

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

移动项目