我有一些 QGraphicsObjects,它们取决于它们所在场景的大小。所以我的图形对象需要知道两个事件何时发生:
- 当它被添加到场景中时
- 当它的场景被调整大小时
我现在的做法是 - 在场景的父级中创建 2 个信号:obj_create、scene_resize。并将它们连接到 gr.object 的插槽。这似乎不是最好的方法。我在 QGraphcisItem 中找不到像addedToScene或sceneResized之类的任何事件...
非常感谢。
我有一些 QGraphicsObjects,它们取决于它们所在场景的大小。所以我的图形对象需要知道两个事件何时发生:
我现在的做法是 - 在场景的父级中创建 2 个信号:obj_create、scene_resize。并将它们连接到 gr.object 的插槽。这似乎不是最好的方法。我在 QGraphcisItem 中找不到像addedToScene或sceneResized之类的任何事件...
非常感谢。
我会建议两种可能的方法之一:在 GraphicsItem 中子类 QObject 并简单地使用 Signal/Slots 或定义自己的接口,让我们说 IResizableEvent 与 resize 方法。在您的 GraphicsItem 中,您使用调整大小代码实现该方法。当您在 Scene 类中检测到场景调整大小时,只需遍历所有项目,将它们转换为接口类型并调用调整大小方法。
我只需要稍微准确地阅读文档...希望它可以帮助某人...
QVariant itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == QGraphicsItem::ItemSceneHasChanged)
{
this->performSomeUpdates();
QObject::connect(this->scene(),SIGNAL(sceneRectChanged(QRectF)),this,SLOT(sceneRectChanged(QRectF)));
}
return QGraphicsItem::itemChange(change, value);
}