ポエム
Qt には Undo framework があり、 QUndoStack に QUndoCommand を積んでいけば、いい感じに undo, redo できるようになる。
このときメモリが解放されるのかなど若干動作に癖というか、細かい部分の挙動の記述が少ないので記事にしておく。
挙動の確認は動かすのが面倒なので実際のコードを見た。ヘルプ書いてあっても英語だしあんま変わんないんだよね。
メモリ解放
QUndoStack は以下のときにメモリ解放をしている。
push時に、 redo 側に残されたコマンド- デストラクタ実行時に登録されているコマンド
つまり自前で QUndoCommand のメモリ管理はせずに QUndoStack に突っ込んでおけば良い。
push 時の挙動
確信が無かったので調べたけど、 QUndoStack は QUndoCommand を push した際に一発 redo を呼んでいる。
Command と同様の操作をする必要はない。まあそれもそうか。