Bonjour,
Je suis en train d'implémenter un model pour mon listview, voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
class ListProjectModel(QAbstractListModel):        
    def __init__(self, datain):
        QAbstractListModel.__init__(self)
        self.projects = datain
    def rowCount(self, parent = QModelIndex()):
        return len(self.projects)
    def data(self, index, role):
        if index.isValid() and role == Qt.DisplayRole:
            return self.projects[index.row()].name
        else:
            return ""
    def setData(self, index, value, role):
        if not index.isValid():
            return False
        elif role != Qt.EditRole:
            return False
        self.projects[index.row()].name = value
        return True
    def flags(self, index):
        return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable
    def insertRows(self, position, rows, parent):
        self.beginInsertRows(QModelIndex(), position, position + rows - 1)
        for row in range(rows):
            self.projects.insert(position, Project(""))
        self.endInsertRows()
        return True
    def removeRows(self, position, rows, parent):
        self.beginRemoveRows(QModelIndex(), position, position + rows -1)
        for row in range(rows):
            self.projects.pop(position)
        self.endRemoveRows()
        return True
Maintenant quand j'implément un bouton "Add Project" pour pouvoir ajuster un élément dans mon modèle et en même temps mettre à jour ma vue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
    def addProject(self, project):
        self.model.insertRows(self.model.rowCount(), 1, QModelIndex())
        self.model.setData(self.listView.currentIndex(), project.name, Qt.EditRole)
Je ne vois pas que la vue soit modifiée,
Quelle est alors la solution pour que la vue et le model sont synchronisés?
Merci,