2015-05-28 27 views
0

我很困惑Qt如何在我的自定義元素上存儲職位。我從QGraphicsRectItem繼承,並在圖形視圖中看到「Page」項目,但是我注意到當我嘗試從pos()或scenePos()訪問它們的位置時,它們都返回(0,0),即使它們都是在視圖中的不同位置。我不確定我是否完全誤解了一切的相對定位,但我認爲這兩個函數中至少有一個會返回不同的東西。qgraphicsitem職位返回零

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

QGraphicsRectItem的繪製的矩形無關與項目的位置 - 有沒有提供給你的構造,設置的位置。

你在做什麼是創建一個QGraphicsRectItem定位在(0,0),但在項目座標(100,100)處繪製一個矩形導致(0,0,180,120)的邊界矩形。

您需要在項目座標中創建矩形,然後使用setPos(..)移動該項目。