的問題基本上是冠軍,但一些細節:如果模型更改,ListView是否會重新繪製底層模型?
我有子類的QAbstractListModel
,讓我們將其命名爲myModel
。 我使用C++代碼創建了myModel
的內容,然後將其輸入QML中的ListView
。 我的代碼修改了C++代碼中的myModel
,我可以立即在ListView
中看到這些修改,這很好。 我的問題是,ListView
是否重繪了其所有元素,底層模型是否改變(如添加項目)或只繪製新項目?
的問題基本上是冠軍,但一些細節:如果模型更改,ListView是否會重新繪製底層模型?
我有子類的QAbstractListModel
,讓我們將其命名爲myModel
。 我使用C++代碼創建了myModel
的內容,然後將其輸入QML中的ListView
。 我的代碼修改了C++代碼中的myModel
,我可以立即在ListView
中看到這些修改,這很好。 我的問題是,ListView
是否重繪了其所有元素,底層模型是否改變(如添加項目)或只繪製新項目?
根據ListView
代表我檢查了Component.onCompleted
和Component.onDestruction
調用了多少次。結果是,當插入新項目時,Component.onCompleted
僅被調用一次,並且當項目被移除時,Component.onDestruction
僅被調用一次,這意味着ListView
在插入和移除項目時不會重繪整個列表!
這取決於你模型發出的信號,其中一些可能不明顯,如果你只是重寫一些受保護的方法。請參閱QAbstractItemModel類中的信號文檔。