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(..)
.
移动项目
我对 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(..)
.