私はアプリケーション開発にQtを使用することを学んでおり、アプリケーションの開発にかなり成功しています。ここで、アプリケーションにUndoREDO機能を実装したいと思います。このトピックのドキュメントにはほとんど情報がありません。SDKの2つの例から理解しようとさえしました。しかし、私はそれがどのように機能するかを理解するのに苦労しています。誰かが私にそれを実装する方法を説明するのに手間取ってくれませんか?私のアプリケーションには、この機能を提供したいさまざまな状態があります。それで、説明は一般的な観点から行うことができますか?同じことを説明している記事がインターネット上にすでにある場合は、それらについて私に知らせてください。それは非常に役に立ちます。ありがとうございました。
質問する
3639 次
1 に答える
9
QUndoCommandとQUndoStackの 2 つのコア クラスがあります。
- QUndoCommand は、コマンド クラスの基本クラスです。自分で undo() と redo() を実装する必要があります。
- QUndoStack は基本的に QUndoCommand オブジェクトのコンテナーであり、QAction の作成、現在の QUndoCommand の元に戻す/やり直しテキストの照会などの追加のメソッド (自分で簡単に実装できる単純な機能) を備えています。
あなたがする必要があるのは:
- コマンドを実装します。必要に応じて、自分でやり直し/元に戻す方法を決定する必要があります。クラス AppendText は良い例です: http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
- ドキュメントごとに QUndoStack インスタンスを保持します (アプリケーションにドキュメントが 1 つしかない場合は 1 つのインスタンス)。
- UI に「AppendText」コマンド クラスと「Append」ボタンがあるとします。「追加」ボタンがクリックされた場合、AppendText コマンド インスタンスを作成し、QUndoStack::push(appendCmd) を呼び出す必要があります。QUndoStack::push() は最初に AppendText::redo() を呼び出し、それを元に戻すためにコンテナに入れます。
それでおしまい。
于 2013-03-03T14:16:26.250 に答える