Implement a QAbstractItemModel