If you use a QAbstractListModel the data() will be accessed on demand only (tested). TableView will reuse delegates when scrolling up/down and not create new ones (according to description)