0

我有一些 QGraphicsObjects,它们取决于它们所在场景的大小。所以我的图形对象需要知道两个事件何时发生:

  1. 当它被添加到场景中时
  2. 当它的场景被调整大小时

我现在的做法是 - 在场景的父级中创建 2 个信号:obj_create、scene_resize。并将它们连接到 gr.object 的插槽。这似乎不是最好的方法。我在 QGraphcisItem 中找不到像addedToScenesceneResized之类的任何事件...

非常感谢。

4

2 回答 2

1

我会建议两种可能的方法之一:在 GraphicsItem 中子类 QObject 并简单地使用 Signal/Slots 或定义自己的接口,让我们说 IResizableEvent 与 resize 方法。在您的 GraphicsItem 中,您使用调整大小代码实现该方法。当您在 Scene 类中检测到场景调整大小时,只需遍历所有项目,将它们转换为接口类型并调用调整大小方法。

于 2012-11-22T19:47:31.133 回答
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);

}
于 2012-11-22T19:51:55.613 回答