2013-02-07 40 views
10

我正在使用Qt模型/視圖框架。當我重置模型中的數據時,我必須重置模型以使視圖更新。怎麼做?我在QAbstractItemModel中發現了一個信號modelReset(QPrivateSignal);,這是解決它的方法嗎?如何發出信號?謝謝。如何重置Qt中的模型?

+1

值得一提的,還有其他方法,可幫助更新的觀點。全部取決於所做的更改。當您在模型中執行大型模擬時,模型重置非常有用。有'beginInsertRow','beginMoveRows','beginRemoveRows'。所有這些方法也適用於列。因此,如果您要執行較小的更改,請不要使用'beginResetModel',因爲它將在視圖中重建整個模型,而不是對視圖應用較小的更改。 –

回答

11

您在重置數據之前撥打beginResetModel(),然後在完成後撥打endResetModel()endResetModel()發出私人信號。

+0

謝謝,就是這樣。 – Borzh

2

正如您所見,here,首選方法是在您的模型子類中使用圍繞您的重置代碼的beginResetModel()endResetModel()函數。

這應該處理適當的發射信號。

一些子類化QAbstractItemModel可能會允許您使用model.removeRows(0,model.rowCount())(別人會要求你自己實現)