私のアプリケーション開発にQtを使用することを学んでいます&私は自分のアプリケーションを開発するのにかなり成功しています。今私は自分のアプリケーションのアンドゥー・リドゥ機能を実装したいと思います。このトピックのdocにはほとんど情報がありません。私はSDKの2つの例を理解しようとしました。しかし、私はそれがどのように機能するかを理解するのに苦労しています。 誰かが私にそれを実装する方法を説明する手間をかけることができますか? 私のアプリケーションには、この機能を提供したいさまざまな状態があります。 説明は一般的な観点からできますか? インターネット上にすでに記事がある場合は、その旨をお知らせください。それは非常に役に立ちます。 ありがとうございます。QtのUndo Redo Frameworkを理解できません
答えて
は2つのコアクラスがあります。QUndoCommandとQUndoStack。
- QUndoCommandは、コマンドクラスの基本クラスです。 undo()とredo()を自分で実装する必要があります。
- QUndoStackはQActionを作成するなどの余分な方法で、基本的にQUndoCommandオブジェクトのコンテナで、現在QUndoCommandのクエリアンドゥ/リドゥテキスト(あなたが簡単に自分で実装することができますシンプルな機能)
あなたがする必要がどのようなものです:
- コマンドを実装します。必要に応じて、やり直し/取り消しを実装する方法を決定する必要があります。 AppendTextクラスは良い例です:http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
- 各ドキュメントのためのQUndoStackインスタンスを保持します(またはアプリケーションにドキュメントが1つしかない場合は1つのインスタンス)。
- 「AppendText」コマンドクラスとUIに「Append」ボタンがあるとします。 「Append」ボタンをクリックすると、AppendTextコマンドインスタンスを作成し、QUndoStack :: push(appendCmd)を呼び出す必要があります。 QUndoStack :: push()はAppendText :: redo()を最初に呼び出し、Undoのためにコンテナに入れます。
これだけです。
私はいくつかのビット&部分を理解しましたが、なぜQt Undo Redo Frameworkを使用するのか理解できません。 セッションのすべての履歴を元の状態に戻したりやり直したりする自分のクラスを実装する方が便利でしょうか? Qtの組み込みフレームワークから、自分のアプリケーション用にカスタマイズされた私の独自のフレームワークと比べて、私は尋ねたいことはありますか? –
単純なアプリケーションの場合、qtのUndoフレームワークは時間を大幅に節約できます。しかし、あなたの場合にはより良い解決策があれば、ただそれに行きましょう。あなたがそれを使用するよう強制する、元に戻すフレームワークには何も不思議なことはありません。 – Chen
助けてくれてありがとう。 –
- 1. NSUndoManagerは、Undo/Redo図面用のiPhoneアプリのredo/undoでスタックを保持しない
- 2. FirstResponderにはredoがありません:
- 3. SERQLクエリを理解できません
- 4. クエリを理解できません
- 5. クローンを理解できません
- 6. エラーを理解できません
- 7. rubyエラーを理解できません
- 8. gluLookatを理解できません
- 9. ID3アルゴリズムを理解できません
- 10. クラッシュを理解できません。
- 11. スカラコード - 私は理解できません
- 12. TextBoxの優れた効率的なUndo/Redo機能の実装方法
- 13. Pythonの出力の理由を理解できません
- 14. モジュール 'jqwidgets-framework'を解決できませんnpm
- 15. このクエリの書き方を理解できません
- 16. 出力理由を理解できません
- 17. Qtでqwtをリンクできません
- 18. UNDOとREDOオプションを実装するために使用されるデータ構造
- 19. Wscriptの引数を理解できませんでした
- 20. AndroidのBluetoothサンプルでmHandler.obtainMessage()を理解できません
- 21. Macで権限の警告を理解できません
- 22. ReentrantLockをロックします。 javadocを理解できません
- 23. コードスニペットの戻り値の型を理解できません
- 24. K&Rのgetint()の動作を理解できません
- 25. このCスニペットの出力を理解できません
- 26. postgresqlのwhere句の後にクエリーを理解できません
- 27. EXISTS句のこの例を理解できません
- 28. この再帰コードの意味を理解できません
- 29. ハッシュのpsedorandom number generatorのプログラミングコードを理解できません
- 30. MALLETインスタンスオブジェクトのデータフィールドを理解できません
あなたは何を理解していませんか?特定のクラス?概要? – Synxis
私は4つのクラスとその目的を理解することができますが、QUndoCommandのように、それらを使用する方法はわかりません。 –