必要なのは 1 つだけですQGraphicsScene
が、ここで重要なのは、すべてQGraphicsItem
の と をQGraphicsObject
親にすることができるということです。
単一のオブジェクトQGraphicsItem
またはQGraphicsObject
親オブジェクトとして作成する場合、何も描画する必要はありませんが、レイヤーのアイテムのルートとして使用できます。
したがって、からサブクラス化して、何もレンダリングしないクラスQGraphicsItem
を作成し、その子と同じレイヤーで必要なすべての楕円、多角形などを追加します。QGraphicsItemLayer
QGraphicsItemLayer
レイヤーを非表示にする場合は、親QGraphicsItemLayer
オブジェクトを非表示にすると、そのすべての子も非表示になります。
-------- 編集 --------------
継承元QGraphicsItem
: -
class QGraphicsItemLayer : public QGraphicsItem
{
public:
virtual QRectF boundingRect()
{
return QRectF(0,0,0,0);
}
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
{
}
};
レイヤー アイテムを作成します。
QGraphicsItemLayer* pLayer = new QGraphicsItemLayer;
レイヤーに必要なオブジェクトを追加します。pLayer が親として渡されることに注意してください。
QGraphicsEllipseItem = new QGraphicsEllipseItem(pLayer);
QGraphicsScene
と呼ばれるポインタを使用して を作成したと仮定しますpScene
: -
pScene->addItem(pLayer);
次に、レイヤーを非表示にしたい場合
pLayer->hide();
またはレイヤーを表示します: -
pLayer->show();