Вообще-то настоящий кайф начинается когда в undo надо восстановить разорванные связки
Здесь есть смысл работать по "ID" - уникальный ключ объекта. Хранится мапа, напр <ID, QPointer <QObject> >. Объект знает на какие ID он ссылается и какие на него. При удалении объекта эл-ты из мапы не удаляются. Объект может получить указатель по ID, но не должен этот указатель постоянно хранить.