2015-05-28 7 views
0

Я смущен тем, как Qt хранит позиции в моих пользовательских элементах. Я наследую от QGraphicsRectItem, и я вижу элементы «Страница» в графическом представлении, но я заметил, что когда я пытаюсь получить доступ к их позициям из pos() или scenePos(), они возвращают (0,0), хотя оба они в разных местах в представлении. Я не уверен, что я просто полностью недопонимаю относительное позиционирование всего, но я решил, что хотя бы одна из двух функций вернет что-то другое.qgraphicsitem position return zero

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 «s не имеет ничего общего с позицией элемента - нет конструктора доступны, который устанавливает позицию.

Что вы делаете, это создать QGraphicsRectItem, расположенный в (0,0), но рисуя прямоугольник в точке (100,100) в координатах элемента, в результате чего образуется ограничивающий прямоугольник (0,0,180,120).

Вам необходимо создать прямоугольник в элементах координатах, а затем переместить элемент, используя setPos(..).