Bonjour tout le monde,
J'ai une QTreeview qui affiche un modèle contenant 2 colonnes par item. Chaque item contient un booléen et un nom. Je tiens à préciser que je ne souhaite pas utiliser QStandardItem et QStandardItemModel car je vais rajouter des éléments dans chacun de mes items. De plus je ne souhaite pas utiliser QTreeWidget car je dois partager mon modèle à travers mon application.
Pour ajouter un item, je récupère le QModelIndex courant avec la méthode QTreeWidget::selectionModel()->currentIndex(), puis je récupère le nombre d'enfant associés à l'item et j'insère une nouvelle ligne à partir de l'index courant.
Cette méthode fonctionne lorsque je sélectionne la première colonne de mon item mais lorsque je sélectionne la seconde, j'obtiens n'importe quoi (cf les images).
Comportement attendu
Comportement bizarre lorsque je sélectionne mon item à partir de la seconde colonne et j'ajoute un nouvel item.
Pour info, quelque soit la colonne sélectionnée, j'obtiens bien le bon item associé. De plus, l'item enfant est correctement ajouté dans mon modèle.
Voici les bouts de codes qui me permettent d'ajouter un item à mon model.
Je n'arrive pas à comprendre ce que je fais de travers. Un peu d'aide svp?
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 //Partie vue void TreeView::on_addButton_clicked() { QModelIndex index = ui->treeView->selectionModel()->currentIndex(); Model * model = static_cast<Model*>(ui->treeView->model()); int row = 0; Item * currentItem = model->getItem(index); // Récupère la taille des enfants pour ajouter une ligne à la fin row = currentItem->children().size(); model->insertRow(row, index); } //Partie Modèle bool Model::insertRows(int row, int count, const QModelIndex &parent) { Item *parentItem = getItem(parent); bool success; beginInsertRows(parent, row, row + count - 1); success = parentItem->insertChildren(row, count); endInsertRows(); return success; }
Merci!
Partager