2008-11-06 79 views
4

我有一个QGraphicsScene,我想复制并追加到列表的开始。这样做的最好方法是什么?Qt QGraphicsScene副本

QGraphicsScene* m_scene = new QGraphicsScene(); 
QGraphicsScene* m_DuplicateScene; 

QList<QGraphicsScene *>m_list; 
+0

追加到列表,或在列表(有时被称为前置)的开头插入?另外,你只是想复制指针还是整个场景? – 2008-11-06 17:04:42

+0

我想复制整个场景,并将其附加到列表中。 – 2008-11-10 09:49:57

回答

5

这样做会非常复杂,因为您对m_scene的孩子一无所知。即使你为每个类型的QGraphicsItem创建了dynamic_cast并创建了clone()函数,但仍需要记住其他人可以继承QGraphicsItem并创建自己的图形项目类型,使其不可被你克隆。

基本上,不,您不能复制QGraphicsScene(克隆过程中的所有项目)。你甚至不能引用原始场景的孩子的子女,因为QGraphicsItem只能有一个场景。

除非我错过了方法调用,当然。不过,搜索“克隆”,“复制”和“重复”不会产生任何结果。

关于第二个问题,请使用QList<T *>::push_front。因此,m_list.push_frontm_DuplicateScene);

(旁注:你在前面加上一个列表的开始,并追加到列表的末尾。)