Я использую QSortFilterProxyModel для фильтрации результатов из QAbstractListModel. Тем не менее, я бы хотел вернуть первую запись, которой нет в исходной модели, то есть она как-то искусственна.QSortFilterProxyModel возвращает искусственную строку
Это то, что я до сих пор:
class ActivedAccountModel(QSortFilterProxyModel):
def __init__(self, model, parent=None):
super(ActiveAccountModel, self).__init__(parent)
self.setSourceModel(model)
self.setDynamicSortFilter(True)
def data(self, index, role=Qt.DisplayRole):
account_info = super(ActiveAccountModel, self).data(index, Qt.UserRole).toPyObject()
if role == Qt.DisplayRole:
return account_info.name
elif role == Qt.UserRole:
return account_info
return None
def filterAcceptsRow(self, source_row, source_parent):
source_model = self.sourceModel()
source_index = source_model.index(source_row, 0, source_parent)
account_info = source_model.data(source_index, Qt.UserRole)
return isinstance(account_info.account, Account) and account_info.account.enabled
Это возвращает список в виде:
Account 1
Account 2
...
Id», как вернуть дополнительный элемент в начале возвращаемой список F элементы:
Extra Element
Account 1
Account 2
...
Я попытался переописать сверку, чтобы вернуть реальную ROWCOUNT() + 1, но почему-то я бы необходимо, чтобы сдвиг все предметы, чтобы вернуть этот искусственный элемент в индекс 0, и я немного потерялся там.
Любой ключ? До сих пор я не мог найти какой-либо пример кода ... Спасибо!
Я не уверен, что QSortFilterProxyModel лучшее место, чтобы попытаться сделать это. Оперативные условия: _sort_ и _filter_. Я думаю, что делать это в пользовательской модели было бы лучше. –