問題表現出一定的QGraphicsItems樹一個的QGraphicsView
採取QGraphicsItems有一定的樹:有兩個QGraphicsTextItems爲孩子QGraphicsRectItem。
QGraphicsRectItem CompositeObject;
QGraphicsTextItem text1;
QGraphicsTextItem text2;
text1.setParent(CompositeObject);
text2.setParent(CompositeObject);
現在採取不同的位置有兩個QGraphicsRectItem一個QGraphicsScene:
QgraphicsScene scene;
QGraphicsRectItem* rect1 = scene.addRect(...);
QGraphicsRectItem* rect2 = scene.addRect(...);
rect1.setPos(0,0);
rect2.setPos(0,100);
我現在想的是CompositeObject是Rect1的和RECT2的子女;我的目標是:在同一場景中的兩個地方顯示QGraphicsItems的相同子樹,並由父rect剪切。子樹上的更新將在QGraphicsView中的兩個地方可見,而無需任何手動同步等。
解決這我不肯定
我能想到的關於如何做到這一點的唯一事情是:通過使用proxywidget嵌入在場景二QGraphicsViews。我希望在我的場景中複製的子樹將成爲另一個場景(subScene),並且我的主場景中的兩個QGraphicsViews都將顯示subScene。這可能會做到這一點,但由於proxywidget引入了很好的開銷,因爲subScene中的項目必須定期進行動畫和更新,這是我無法承受的。
QGraphicsScene subScene;
QGraphicsTextItem text1;
QGraphicsTextItem text2;
subScene.addItem(text1);
subScene.addItem(text2);
QgraphicsScene scene;
QgraphicsView view1(&subScene);
QgraphicsView view2(&subScene);
QGraphicsProxyWidget* proxy1 = scene.addWidget(&view1);
proxy1.setPos(0,0);
QGraphicsProxyWidget* proxy2 = scene.addWidget(&view2);
proxy2.setPos(0,100);
是否有任何其他選項關於如何做到這一點?
我不認爲這會奏效。首先,兒童物品被塗在父母的油漆之外()。並且代理項目的本地座標仍將映射到其自己的位置。你基本上在相同的地點兩次繪製相同的東西。那就是如果它沒有被修剪過的話。 – 2011-03-09 23:02:00