2009-12-08 62 views
2

我有一個關於通知模型的一些其他對象存儲引用的問題。通知QAbstractItemModel的子類有關更改

我知道信號dataChanged(),但我不知道如何使用它。例如,我的模型存儲對其他對象的引用(我們稱之爲myObjPtr)。只有在模型上調用rowCount(),columnCount(),data()等方法時,模型纔會查詢myObjPtr的內容。

然後,如果我對myObjPtr的內容進行了一些更改,應該如何通知模型以便它可以發出具有適當參數的dataChanged()信號?我應該使用模型的setData()方法嗎?如果我爲了實例刪除或替換了myObjPtr中的某些元素,我應該傳遞哪些參數?

謝謝。

回答

3

如果我明白你在問什麼,那麼最簡單的方法是myObjPtr發出一個信號,它在發生改變時發出,並在模型中發出dataChanged()信號。請記住,dataChanged()信號是特定數據更改的。如果無法達到這種精度,您也可以在模型中調用reset(),這會導致所有信息都被更新。

+0

感謝您對reset()方法的提示。 你能否詳細解釋dataChanged()的情況?當我刪除/添加/替換myObjPtr中的元素時(myObjPtr實際上具有樹形結構),我在原始帖子中詢問應將哪些參數傳遞給dataChanged()。我應該爲調用'emit dataChanged(topLeft,bottomRight);'中使用的元素構造QModelIndex的新實例嗎? –

+2

如果myObjPtr可以提供有關已更改內容的足夠信息,請使用dataChanged信號。是的,您應該創建QModelIndex的新實例來執行此操作。確保使用模型的方法創建它們,或者正確設置索引的父級,以便Qt確切知道哪些模型項目已更改。 –

相關問題