tags:

views:

400

answers:

1

I have a QGraphicsScene that I want to copy and append to the start of a list. What is the best method of doing this?

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

QList<QGraphicsScene *>m_list;
+3  A: 

Doing this would be very complicated because you don't know anything about the children of m_scene. Even if you dynamic_cast and create a clone() function for each type of QGraphicsItem, you still need to remember that other people can subclass QGraphicsItem and create their own type of graphics item, making them unclonable by you.

Basically, no, you can't duplicate a QGraphicsScene (cloning all items in the process). You can't even make references to the children of the original scene's children because a QGraphicsItem can only have one scene.

Unless I'm missing a method call, of course. Searches for "clone," "copy," and "duplicate" produced no results, though.

On your second question, use QList<T *>::push_front. Thus, m_list.push_front(m_DuplicateScene);

(Side note: you prepend to the start of a list, and append to the end of a list.)

strager
Thank you, I ended up created a method that serialised the Scenes properties and then iterated through the Scenes objects and got them to serialised themselves as well.Its slow and a lot of work but it works.
Phil Hannent