// QT 4.8
我已经实现了一个可调整大小的QGraphicsItem,它工作得很好。
但是,现在,我需要在此可调整大小的项目中包含子项目。 子项目大小/位置显然取决于父项目。 我的问题是在调整父元素大小时通知孩子。 但到目前为止,父母本身并没有发现自己的尺寸变化(而在现场,一切都表现得像预期的那样!)
在父项目(=可调整大小的项目)中,我试图覆盖
QVariant itemChange(QGraphicsItemChange, QVariant)
以转储更改事件。我可以看到所有事件,但是当item(正在)调整大小时,itemChange方法永远不会被调用。
非常感谢任何帮助。
NB:
在我的可调整大小的QGraphicsItem构造函数中,我启用了标志QGraphicsItem :: ItemSendGeometryChange
ResizableGraphicsItem::ResizableGraphicsItem(QGraphicsItem *p_parent,
qreal p_initialWidth,
qreal p_initialHeight)
: QGraphicsItem(p_parent), _width(p_initialWidth),
_height(p_initialHeight), _resized(true)
{
setFlag(ItemSendsGeometryChanges);
...
}
resize方法如下所示:
void ResizableGraphicsItem::setSize(qreal p_width, qreal p_height)
{
prepareGeometryChange();
if ((_width != p_width) ||
(_height != p_height))
{
_width = p_width;
_height = p_height;
_resized = true;
}
}
使用:
QRectF ResizableGraphicsItem::boundingRect() const
{
return QRectF(0, 0, _width, _height);
}