2013-03-03 9 views
5

私のアプリケーション開発にQtを使用することを学んでいます&私は自分のアプリケーションを開発するのにかなり成功しています。今私は自分のアプリケーションのアンドゥー・リドゥ機能を実装したいと思います。このトピックのdocにはほとんど情報がありません。私はSDKの2つの例を理解しようとしました。しかし、私はそれがどのように機能するかを理解するのに苦労しています。 誰かが私にそれを実装する方法を説明する手間をかけることができますか? 私のアプリケーションには、この機能を提供したいさまざまな状態があります。 説明は一般的な観点からできますか? インターネット上にすでに記事がある場合は、その旨をお知らせください。それは非常に役に立ちます。 ありがとうございます。QtのUndo Redo Frameworkを理解できません

+0

あなたは何を理解していませんか?特定のクラス?概要? – Synxis

+0

私は4つのクラスとその目的を理解することができますが、QUndoCommandのように、それらを使用する方法はわかりません。 –

答えて

8

は2つのコアクラスがあります。QUndoCommandQUndoStack

  1. QUndoCommandは、コマンドクラスの基本クラスです。 undo()とredo()を自分で実装する必要があります。
  2. QUndoStackはQActionを作成するなどの余分な方法で、基本的にQUndoCommandオブジェクトのコンテナで、現在QUndoCommandのクエリアンドゥ/リドゥテキスト(あなたが簡単に自分で実装することができますシンプルな機能)

あなたがする必要がどのようなものです:

  1. コマンドを実装します。必要に応じて、やり直し/取り消しを実装する方法を決定する必要があります。 AppendTextクラスは良い例です:http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
  2. 各ドキュメントのためのQUndoStackインスタンスを保持します(またはアプリケーションにドキュメントが1つしかない場合は1つのインスタンス)。
  3. 「AppendText」コマンドクラスとUIに「Append」ボタンがあるとします。 「Append」ボタンをクリックすると、AppendTextコマンドインスタンスを作成し、QUndoStack :: push(appendCmd)を呼び出す必要があります。 QUndoStack :: push()はAppendText :: redo()を最初に呼び出し、Undoのためにコンテナに入れます。

これだけです。

+1

私はいくつかのビット&部分を理解しましたが、なぜQt Undo Redo Frameworkを使用するのか理解できません。 セッションのすべての履歴を元の状態に戻したりやり直したりする自分のクラスを実装する方が便利でしょうか? Qtの組み込みフレームワークから、自分のアプリケーション用にカスタマイズされた私の独自のフレームワークと比べて、私は尋ねたいことはありますか? –

+1

単純なアプリケーションの場合、qtのUndoフレームワークは時間を大幅に節約できます。しかし、あなたの場合にはより良い解決策があれば、ただそれに行きましょう。あなたがそれを使用するよう強制する、元に戻すフレームワークには何も不思議なことはありません。 – Chen

+0

助けてくれてありがとう。 –

関連する問題