0

シーンのサイズに依存するいくつかの QGraphicsObjects があります。したがって、私のグラフィックス オブジェクトは、次の 2 つのイベントがいつ発生するかを知る必要があります。

  1. シーンに追加すると
  2. シーンのサイズが変更されたとき

私が今それを行う方法は、シーンの親に2つの信号を作成することです:obj_create、scene_resize。そしてそれらを gr.object のスロットに接続します。それは最善の方法ではないようです。QGraphcisItem でaddedToScenesceneResizedのようなイベントが見つかりません...

どうもありがとう。

4

2 に答える 2

1

GraphicsItem で QObject をサブクラス化し、単に Signal/Slots を使用するか、独自のインターフェイスを定義します。サイズ変更メソッドを使用して IResizableEvent としましょう。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 に答える