2016-03-03 18 views
0

的問題基本上是冠軍,但一些細節:如果模型更改,ListView是否會重新繪製底層模型?

我有子類的QAbstractListModel,讓我們將其命名爲myModel。 我使用C++代碼創建了myModel的內容,然後將其輸入QML中的ListView。 我的代碼修改了C++代碼中的myModel,我可以立即在ListView中看到這些修改,這很好。 我的問題是,ListView是否重繪了其所有元素,底層模型是否改變(如添加項目)或只繪製新項目?

回答

0

根據ListView代表我檢查了Component.onCompletedComponent.onDestruction調用了多少次。結果是,當插入新項目時,Component.onCompleted僅被調用一次,並且當項目被移除時,Component.onDestruction僅被調用一次,這意味着ListView在插入和移除項目時不會重繪整個列表!

1

這取決於你模型發出的信號,其中一些可能不明顯,如果你只是重寫一些受保護的方法。請參閱QAbstractItemModel類中的信號文檔。

相關問題