我正在使用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时才能返回真实rowCount时()+ 1,但不知何故,我会需要转移所有项目才能返回索引为0的这个人造元素,我在那里有点失落。
任何线索?到目前为止我找不到任何相关的代码示例...谢谢!
我不确定QSortFilterProxyModel是最好的地方尝试做到这一点。操作术语是_sort_和_filter_。我认为在定制模型中这样做会更好。 – 2010-09-16 21:26:51