Faire cela serait très compliqué parce que vous ne savez pas quoi que ce soit au sujet des enfants de m_scene
. Même si vous dynamic_cast
et créez une fonction clone()
pour chaque type de QGraphicsItem
, vous devez toujours vous rappeler que d'autres personnes peuvent sous-classer QGraphicsItem
et créer leur propre type d'élément graphique, ce qui les rend non clones par vous.
Fondamentalement, non, vous ne pouvez pas dupliquer un QGraphicsScene
(en clonant tous les éléments dans le processus). Vous ne pouvez même pas faire référence aux enfants des enfants de la scène d'origine car un QGraphicsItem
ne peut avoir qu'une seule scène.
À moins de manquer un appel de méthode, bien sûr. Les recherches de "clone", "copy" et "duplicate" n'ont cependant donné aucun résultat.
Sur votre deuxième question, utilisez QList<T *>::push_front
. Ainsi, m_list.push_front
(m_DuplicateScene
);
(Note: vous préfixer le début d'une liste, et ajouter à la fin d'une liste.)
Append à la liste, ou insérer au début de la liste (parfois appelée précédez)? Aussi, voulez-vous juste copier le pointeur, ou toute la scène? –
Je veux copier toute la scène et l'ajouter à la liste. –