Bonjour,
dans le cadre d'un projet, je suis amené à utiliser une QListView que je combine à un modèle se basant sur QAbstractListModel.
Ce modèle possède une QList dans laquelle je stocke des pointeurs vers des instances d'une classe Agent.

En faite, ce que je souhaite, c'est que lorsque je crée un nouvel Agent et que je le stocke dans le liste de mon modèle, il apparaisse à l'écran dans la QListView (la valeur affichée est un attribut de mon instance d'Agent).

Or, dans le constructeur de la fenêtre principale, voici ce que je fais afin de tester mes méthodes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
this->agents_list = new QListView(this);
this->agents_list->setMaximumWidth(200);
this->model = new AgentsListModel(this);
this->agents_list->setModel(this->model);
 
model->insert(new Agent(QString("test")));
où "agents_list" est ma QListView.
Jusque là, tout va bien car j'ai bien la valeur "test" qui s'affiche dans la liste de la fenêtre principale...
Ensuite, pour créer de nouveau agent, j'ai crée un formulaire à remplir par l'utilisateur et lorsque celui-ci le valide, la méthode suivante est appelée:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void NewAgentWindow::createAgent() {
    emit sendData(this->name_value->text());
    this->close();
}
Le signal est correctement récupérer et c'est alors cette méthode qui est exécutée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void MainWindow::addAgent(QString name) {    
    Agent* value = new Agent(name);
    this->model->insert(value);
    std::cout << "there " << name.toStdString()<< "  " << model->rowCount() << std::endl;
}
J'ai vérifié, les données sont correctement insérées dans ma liste mais je ne sais pas comment je dois faire pour mettre à jour mon affichage...

Pour être le plus complet possible, je vous joins également le méthode insert invoquée ci-dessus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void AgentsListModel::insert(Agent* value) {
    QModelIndex index = createIndex(list.count(), 0);
    this->list.insert(list.count(), value);
    emit(dataChanged(index, index));
}
Voilà j'espère que mon message est assez clair, si ce n'est pas le cas, n'hésitez pas à me demander plus de précisions car c'est la première fois que j'utilise Qt donc je ne suis pas sur d'avoir été bien complet .

Merci d'avance pour les réponses
Jefeh