我有一些QGraphicsObjects,它们取决于它们所在场景的大小。所以我的图形对象需要知道两个事件何时发生:
我现在的做法是 - 在场景的父级中创建2个信号:obj_create,scene_resize。并将它们连接到gr.object的插槽。这似乎不是最好的方式。我在QGraphcisItem中找不到像 addedToScene 或 sceneResized 这样的事件......
非常感谢。
答案 0 :(得分:1)
我建议使用两种可能的方法之一:在GraphicsItem中子类QObject,只需使用Signal / Slots或定义自己的接口,让我们用resize方法说IResizableEvent。在GraphicsItem中,使用调整大小代码实现该方法。当您在Scene类中检测到场景调整大小时,只需迭代所有项目,将它们转换为接口类型并调用resize方法。
答案 1 :(得分:0)
我只需要准确地阅读文档...希望它可以帮助某人......
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);
}