2

私はQTライブラリとを実験していQGraphicsSceneます。自分のオブジェクトをシーンに追加できますが、それで問題ありません。私が今欲しいQGraphicsSceneのは、オブジェクトの外にあるいくつかのリストです。正方形、円、三角形としましょう。それらはすべてシーンに存在し、(私が正しければ)追加するとシーンによってコピーおよび所有されます。

問題は、外部リストを実装するのに最適なリストテンプレートコンテナの種類です。

私はそれらがポインタである必要があると思うので、私は考えましboost::ptr_containerた。アイテムの削除を開始したら、リストがシーンと同期していることを確認するシステムが必要になることはわかっています。つまり、シーンからオブジェクトを削除する直前に、リストからポインタを削除します。

このシステムをどのように構築すべきかについてのアイデアはとても素晴らしいでしょう。

4

1 に答える 1

1

あなたはそれを必要としません、Qtはあなたのためにすべてをします。

にアイテムを追加するQGraphicsSceneと、シーンがアイテムの所有権を取得します。つまり、シーンはアイテムを保存し、必要なときにアイテムが占有していたメモリを解放する役割を果たします(通常、アイテムを手動で削除するdeleteItem()とき、またはシーン自体を削除するとき)。

items()関数を呼び出すことにより、いつでもシーンに追加されたすべてのアイテムのリストを要求できます。

MyGraphicScene.items();

この関数は、シーンのすべてのアイテムへのポインタのリストをとして返しますQList< QGraphicsItem * >。これはまさに必要なものです。

于 2012-09-19T10:19:43.140 に答える