QtのUndoフレームワークの概要
はじめに
Qt の Undo フレームワークは Command パターンの実装であり、アプリケーションにアンドゥ/リドゥ機能を実装するためのものです。
Command パターンは、アプリケーション内のすべての編集はコマンドオブジェクトのインスタンスを作成することによって行われるという考えに基づいています。コマンドオブジェクトはドキュメントに変更を適用し、コマンドスタックに格納されます。さらに、各コマンドは、ドキュメントを以前の状態に戻すために、その変更を取り消す方法を知っています。アプリケーションがドキュメントの状態を変更するためだけにコマンド・オブジェクトを使用する限り、スタックを下方向に走査し、各コマンドに対して順番にアンドゥを呼び出すことで、一連のコマンドを取り消すことが可能です。また、一連のコマンドをやり直すことも可能で、スタックを上方向に走査し、各コマンドに対してやり直しを呼び出します。
クラス
フレームワークは4つのクラスで構成されている:
- QUndoCommand はアンドゥスタックに格納されているすべてのコマンドの基本クラスです。これは、ドキュメントの単一の変更を適用(やり直し)または取り消すことができます。
- QUndoStack は オブジェクトのリストです。文書上で実行されたすべてのコマンドを含み、それらを元に戻したりやり直したりすることで、文書の状態を前後にロールバックすることができます。QUndoCommand
- QUndoGroup はアンドゥスタックのグループです。 。グループ内のすべてのスタックに対して1組のアンドゥ/リドゥスロットを提供します。これはアンドゥとリドゥのリクエストをアクティブなスタックに転送します。アクティブなスタックとは、ユーザーが現在編集しているドキュメントに関連付けられたスタックのことです。QUndoGroup
- QUndoView はアンドゥスタックの内容を表示するウィジェットです。このビューでコマンドをクリックすると、ドキュメントの状態がそのコマンドまで後退または前進します。
概念
フレームワークでは以下の概念がサポートされています:
- クリーンな状態:クリーン・ステート:ドキュメントがディスクに保存された状態に入るときと、ディスクに保存された状態から出るときのシグナルに使用されます。これは通常、保存アクションを無効にしたり有効にしたり、ドキュメントのタイトルバーを更新するために使用されます。
- コマンド圧縮:一連のコマンドを1つのコマンドに圧縮するために使われます。例えばテキストエディタでは、個々の文字を文書に挿入するコマンドを、テキストのセクション全体を挿入する単一のコマンドに圧縮することができます。このような大きな変更は、ユーザーが元に戻したりやり直したりするのに便利です。
- コマンドマクロ:一連のコマンドのことで、すべて一度に取り消したりやり直したりできる。単純なコマンドのセットをより複雑なコマンドにまとめることができるため、アプリケーションを書く作業が簡単になる。たとえば、ドキュメント内で選択されたオブジェクトのセットを移動するコマンドは、それぞれが単一のオブジェクトを移動するコマンドのセットを組み合わせることで作成できます。
QUndoStack は、メニューやツールバーに挿入できる便利なアンドゥとリドゥ オブジェクトを提供します。これらのアクションのテキストプロパティは、それらがトリガーされたときにどのコマンドが元に戻されるか、またはやり直されるかを常に反映します。同様に、 は、常にアクティブなスタックのアンドゥとリドゥアクションのように動作するアンドゥとリドゥアクションを提供します。QAction QUndoGroup
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。