2012-03-28 36 views
0

我怎麼能撤消或恢復對QStandarItemModel popuplated一個QTableView中的用戶條目?QTableView中QStandardItemModel恢復或取消用戶進入

我已連接dataChanged信號與在那裏我驗證的數據的處理...

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

...但如果用戶輸入錯了我想恢復或撤消用戶進入以前的值的項目。

我看了一下復歸()成員從化QAbstractItemModel繼承,但我不明白它是如何工作的。文檔說「讓模型知道它應該放棄緩存的信息。」但我不確定用戶輸入的數據是緩存還是已存儲在模型中。

無論如何,如果我嘗試...

model->revert(); 

...一個錯誤的用戶進入後它不工作。

在此先感謝!

回答

2

退房Qt的undo framework。在文檔的介紹說:

Qt的撤銷框架是Command Pattern, 實施撤銷在應用程序/重做功能的實現。

Command模式是基於在 應用所有的編輯是通過創建命令對象的情況下完成的想法。命令 對象將更改應用於文檔並存儲在命令 堆棧中。此外,每個命令都知道如何撤銷對文檔的更改,使文檔恢復到之前的狀態。只要 應用程序只使用命令對象改變 文檔的狀態,能夠通過遍歷 堆棧向下和呼叫撤消依次在每個命令以撤消命令序列。也可以通過向上遍歷堆棧 並在每個命令上調用重做來重新執行一系列命令。

+0

謝謝sobingt我會看看它。 – Fracu 2012-04-04 02:45:39

+3

這不是一個答案,而是關於如何找到答案的建議。 – neuronet 2015-03-06 02:07:24

相關問題