QGraphicsItem を継承するカスタム アイテムがあります。メンバー変数としていくつかの子グラフィック アイテムがあります。これらのアイテムをシーンから削除する順序と削除方法を教えてください。
質問する
3610 次
1 に答える
7
次のようなメンバー グラフィック アイテムを作成します。
class MyClass : public QGraphicsItem
{
...
private:
SomeKindOfGraphicsItem* _item1;
SomeOtherGraphicsItem* _item2;
}
MyClass::MyClass( ... ) :
QGraphicsItem( ... ),
_item1( new SomeKindOfGraphicsItem( ..., this ) ),
_item2( new SomeOtherGraphicsItem( ..., this ) )
{
...
}
その場合、MyClass
シーンから親アイテム (この例では) だけを削除するだけで十分です。これにより、すべての子アイテムも削除されます。
void QGraphicsScene::removeItem(QGraphicsItem * アイテム)
item item とそのすべての子をシーンから削除します。item の所有権は呼び出し元に渡されます (つまり、QGraphicsScene は破棄されたときにアイテムを削除しなくなります)。
また、 のオブジェクトMyClass
が削除されると、Qt
メカニズムによってそのすべての子が削除されます。
QGraphicsItem::~QGraphicsItem() [仮想]
QGraphicsItem とそのすべての子を破棄します。このアイテムが現在シーンに関連付けられている場合、アイテムは削除される前にシーンから削除されます。
注: アイテムを破棄する前に QGraphicsScene からアイテムを削除する方が効率的です。
于 2013-01-21T12:25:54.820 に答える