私のアプリケーション開発に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. "redo/undo"機能の問題(mfc、C++)
- 2. NSUndoManagerは、Undo/Redo図面用のiPhoneアプリのredo/undoでスタックを保持しない
- 3. FirstResponderにはredoがありません:
- 4. 理解できません
- 5. 出力を理解できません
- 6. SERQLクエリを理解できません
- 7. クエリを理解できません
- 8. コードを理解できません
- 9. クローンを理解できません
- 10. エラーを理解できません
- 11. ポインタ文を理解できません
- 12. rubyエラーを理解できません
- 13. defprojectを理解できませんか?
- 14. gluLookatを理解できません
- 15. C++:コンパイルエラーを理解できません
- 16. ID3アルゴリズムを理解できません
- 17. クラッシュを理解できません。
- 18. _chipmunk_cffi.libを理解できませんcp
- 19. アップルクラッシュログを理解できません
- 20. Pythonエラーを理解できません
- 21. TextBoxの優れた効率的なUndo/Redo機能の実装方法
- 22. EmacsでC-r(undo-tree-redo)を悪態モードで再バインドするには?
- 23. スカラコード - 私は理解できません
- 24. Qtカスタムウィジェットビルドできません
- 25. Qtはプロジェクトファイルを解析できません
- 26. Pythonの出力の理由を理解できません
- 27. インデントエラーですが、理由を理解できません。
- 28. モジュール 'jqwidgets-framework'を解決できませんnpm
- 29. インポートakka.actor.UntypedActorを解決できません(Eclipse - Play Framework)
- 30. UNDOとREDOオプションを実装するために使用されるデータ構造
あなたは何を理解していませんか?特定のクラス?概要? – Synxis
私は4つのクラスとその目的を理解することができますが、QUndoCommandのように、それらを使用する方法はわかりません。 –