QSortFilterProxyModel возвращает искусственную строку

Я использую QSortFilterProxyModel для фильтрации результатов из QAbstractListModel. Однако я хотел бы вернуть первую запись, которой нет в исходной модели, то есть она в какой-то степени искусственная.

Вот что у меня есть на данный момент:

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, чтобы вернуть реальный rowCount () + 1, но каким-то образом мне нужно было сдвинуть все элементы, чтобы вернуть этот искусственный элемент с индексом 0, и я Я немного потерялся там.

Есть подсказка? Я пока не смог найти ни одного связанного примера кода ... Спасибо!

5
задан saghul 16 September 2010 в 19:36
поделиться