Ich habe das QT Rückgängig Framework Beispiel als Referenz verwendet, um diese Funktionalität in meinem Tool zu implementieren. Es scheint jedoch einen Fehler mit der Art, wie es den Destruktor der Elemente aufruft, zu haben.Problem mit Qt Rückgängig Framework Beispiel: Hinzufügen/Entfernen von Artikel
Ich verstehe, dass QGraphicsScene Besitz der Elemente übernehmen wird, während sie in der Szene sind. Beide Objekte rückgängig machen: AddCommand und RemoveCommand sollten Besitz dieser Elemente übernehmen, wenn sie sie aus der Szene entfernen.
Im AddOn Framework-Beispiel versucht nur AddCommand das Objekt in seinem Destruktor zu löschen, tut dies jedoch nicht, wenn sich das Objekt noch in der Szene befindet.
AddCommand::~AddCommand()
{
if (!myDiagramItem->scene())
delete myDiagramItem;
}
In diesem Fall, wenn wir das Element aus der Szene nach dem entsprechenden addCommand Objekt verlassen den Stapel (bei Verwendung eines Undo-Limits) entfernen, wird das Element nie wieder da destructor RemoveCommand gelöscht wird es nicht tun .