我对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)
答案 0 :(得分:1)
QGraphicsRectItem
绘制的矩形与项目的位置无关 - 没有可用于设置位置的构造函数。
您正在做的是创建位于(0,0)的QGraphicsRectItem
,但在项目坐标中绘制一个矩形(100,100),从而产生一个(0,0,180,120)的边界矩形。
您需要在 item 坐标中创建矩形,然后使用setPos(..)
移动项目。