Qt QGraphicsScene副本

Phi*_*ent 5 c++ qt

我有一个QGraphicsScene我要复制并附加到列表的开头.这样做的最佳方法是什么?

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

QList<QGraphicsScene *>m_list;
Run Code Online (Sandbox Code Playgroud)

str*_*ger 6

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

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

当然,除非我错过了方法调用.但是,搜索"克隆","复制"和"复制"没有产生任何结果.

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

(旁注:你先于列表的开头,然后附加到列表的末尾.)