2012-03-28 6 views
0

QStandarItemModelでポピュレートされたQTableViewのユーザーエントリを元に戻したり元に戻したりするにはどうすればよいですか?QTableView QStandardItemModelユーザーエントリを元に戻すまたは取り消す

私は以前の値にユーザ入力を元に戻すか、元に戻すにしたい私は、データを検証するハンドラー...

connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex))); 

とdataChanged信号を接続している...しかし場合にユーザーエントリが間違っていますアイテムの

QAbstractItemModelから継承したrevert()メンバーについて読んだことがありますが、どのように正確に動作するのか理解できません。ドキュメンテーションには「キャッシュされた情報を破棄すべきであることをモデルに知らせる」と書かれています。ユーザーが入力したデータがキャッシュされているのか、既にモデルに保存されているのかはわかりません。間違ったユーザーエントリの後に、それは動作しません。とにかく

私は...

model->revert(); 

をしようとすると...。

ありがとうございます!

答えて

2

Qtのundo frameworkをご覧ください。ドキュメントでの導入は言う:

Qtの元に戻すFrameworkは、アプリケーションでアンドゥ/リドゥ機能を実装するためのCommand Pattern、 の実装です。

コマンドパターンは、コマンドオブジェクトのインスタンスを作成して アプリケーションのすべての編集を行うという考え方に基づいています。コマンド オブジェクトはドキュメントに変更を適用し、コマンド スタックに格納されます。さらに、各コマンドは、 への変更を元に戻す方法を知っており、ドキュメントを元の状態に戻します。 アプリケーションがコマンドオブジェクトを使用して ドキュメントの状態を変更するだけでは、 をスタックを横切り、各コマンドでundoを順番に呼び出して一連のコマンドを元に戻すことができます。スタック を上方向にトラバースし、各コマンドでredoを呼び出すことによって一連のコマンドをやり直すことも可能です( )。

+0

ありがとうございました。私はそれを見ていきます。 – Fracu

+3

これは答えを見つける方法についての示唆ではありません。 – neuronet

関連する問題