class UserListWidget(QListView): """ This actual widget that shows the list of users. It contains a proxy that, in turn, contains a UserListModel. """ def __init__(self, users, parent): super(UserListWidget, self).__init__(parent) self.model = UserListModel(users) self.proxy = QSortFilterProxyModel(self) self.proxy.setSourceModel(self.model) self.proxy.setFilterCaseSensitivity(Qt.CaseInsensitive) self.setModel(self.proxy) self.clicked.connect(parent.user_selected) self.adjustSize() def setUsers(self, users): self.model.setUsers(users) def getUser(self, index): return self.model.data(index, UserListModel.UserRole) def filter(self, text): self.proxy.setFilterRegExp(text) self.proxy.filterRegExp()