Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt QGraphicsScene copy

Tags:

c++

qt

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;
like image 501
Phil Hannent Avatar asked Nov 06 '08 09:11

Phil Hannent


1 Answers

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.)

like image 67
strager Avatar answered Oct 27 '22 20:10

strager