Спасибо за комментарии - я никогда не знал о реализации Qt undo / redo. В итоге я реализовал свой собственный контроль.
Для дальнейшего использования для других с подобной проблемой, я сначала попытался создать новый 2D Вектор, чтобы сохранить «состояние» диаграммы, заполненной QGraphicsItems. Сначала это работало до тех пор, пока диаграмма не стала настолько большой, что генерировала 10 000 новых QGraphicsItems при каждом обновлении диаграммы, а также удаляла текущие 10 000 и добавляла новые 10 000, что было невыносимо медленно.
Я изменил его, чтобы вместо него сохранить 2DVector, который содержал свойства (только QColor, строку и т. Д.) Состояния диаграммы, а не сами QGraphicItems. Это позволило мне просто обновить диаграмму, а не заново создавать диаграмму.