properly update items if model changes

This commit is contained in:
Martin Baeuml
2011-06-09 17:18:25 +02:00
parent 4a05c45979
commit d165de6b21
+12 -6
View File
@@ -96,6 +96,14 @@ class BaseItem(QAbstractGraphicsShapeItem):
(key, self.annotation().get(key, "")))
return '\n'.join(text_lines)
def dataChanged(self):
self.data_ = self.index().data(DataRole).toPyObject()
self.dataChange()
self.update()
def dataChange(self):
pass
def updateModel(self, data=None):
if data is not None:
model = self.index().model()
@@ -157,6 +165,9 @@ class PointItem(BaseItem):
pointitem.setRadius(self.radius_)
return pointitem
def dataChange(self):
self.updatePoint()
def updateModel(self):
self.data_['x'] = self.scenePos().x()
self.data_['y'] = self.scenePos().y()
@@ -189,10 +200,6 @@ class PointItem(BaseItem):
painter.setPen(pen)
painter.drawEllipse(self.boundingRect())
def dataChanged(self):
self.data_ = self.index().data(DataRole).toPyObject()
self.updatePoint()
def keyPressEvent(self, event):
step = 1
if event.modifiers() & Qt.ShiftModifier:
@@ -265,8 +272,7 @@ class RectItem(BaseItem):
painter.setPen(pen)
painter.drawRect(self.boundingRect())
def dataChanged(self):
self.data_ = self.index().data(DataRole).toPyObject()
def dataChange(self):
rect = self._dataToRect(self.data_)
self._updateRect(rect)