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