Qt QGraphicsItem不';检测不到自身的边界直接更改
//QT 4.8 我已经实现了一个可调整大小的QGraphicsItem,它工作得非常好 但是,现在,我需要在这个可调整大小的项中包含子项。 子项的大小/位置显然取决于父项。 我的问题是在调整父对象的大小时通知childs。 但到目前为止,父对象本身并没有检测到其自身大小的变化(而在场景中,一切都按预期进行!) 在我试图覆盖的父项(=可调整大小的项)中Qt QGraphicsItem不';检测不到自身的边界直接更改,qt,events,resize,qgraphicsitem,Qt,Events,Resize,Qgraphicsitem,//QT 4.8 我已经实现了一个可调整大小的QGraphicsItem,它工作得非常好 但是,现在,我需要在这个可调整大小的项中包含子项。 子项的大小/位置显然取决于父项。 我的问题是在调整父对象的大小时通知childs。 但到目前为止,父对象本身并没有检测到其自身大小的变化(而在场景中,一切都按预期进行!) 在我试图覆盖的父项(=可调整大小的项)中 QVariant itemChange(QGraphicsItemChange, QVariant) 以转储更改事件。我可以看到所有事件,但在
QVariant itemChange(QGraphicsItemChange, QVariant)
以转储更改事件。我可以看到所有事件,但在调整项目大小时,不会调用itemChange方法
非常感谢您的帮助
注意:
- 在可调整大小的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); ... }
- 调整大小方法如下所示:
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); }
但在调整项目大小时,不会调用itemChange方法。
这是因为itemChange不会检测到边界矩形的更改(请参阅)。您是对的。。。我的问题有点愚蠢,或者说是基于对qtapi的误解。谢谢。