1 Attachment(s)
Unable to contain children bounding boxes in parent bounding box programatically. Pic
Attachment 12050
Here's the code. As you can see in the screen shots, bottom and right adjust in size properly, but placing a node in the top-left area such that the node extents outside the parent, no size adjustment is made, the box and that size seems to stay the same. I've tried 100 different code variants and spent 2 days on the problem.
Code:
def __init__(self, obj, parent=None):
NodeGfx.__init__(self, obj)
self.
setRect(QRectF(0,
0,
100,
100)) # TODO DEBUG REMOVE:
def paint(self, painter, item, widget):
GfxObject.paint(self, painter, item, widget)
painter.setPen(self.pen())
painter.setBrush(self.brush())
painter.drawRect(self.rect())
# DBG
self._dbgPaint(painter, item, widget)
def resize(self, children=None):
if children == None:
children = self.childItems()
rects
= [child.
mapToItem(self,
QPolygonF(child.
rect())).
boundingRect() for child in children
] rects.append(self.boundingRect())
rect = minBoundingRect(rects)
#self.setPos_(self.sceneTransform().map(rect.topLeft()))
#rect = self.mapFromScene(rect).boundingRect()
pos = self.sceneTransform().map(rect.topLeft())
self.setPos_(pos)
self.
setRect(QRectF(0,
0, rect.
width(), rect.
height())) parent = self.parentItem()
if parent and isinstance(parent, NodeGfx):
parent.resize(children=[self])
#def selectionPath(self):
#pass
#def sceneBoundingPolygon(self):
#return self.sceneTransform().map(QPolygonF(self.boundingRect()))