Bonjour à tous,
J'utilise un QTreeWidget contenant des QTreeWidgetItem mais sur lesquels je dessine des QWidget personnalisé. Pour Définir le widget sur le QTreeWidgetItem, j'utilise la fonction setItemWidget()
Mon problème est que durant un glisser/déposer (drag & drop), le widget personnalisé est perdu. Je tente donc de le récupérer juste avant le drop (dropEvent) et de le redéfinir juste après. Cela marche si je créer un nouveau widget mais pas si j'essaye de réutiliser le pointeur du widget présent avant le drag.
Est ce que vous avez une meilleure solution que cette méthode ?
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 void TreeWidget::dropEvent(QDropEvent *event) { QTreeWidgetItem *dragItem = this->currentItem(); // Récupère l'item ColoredWidget *colorWidget = static_cast<ColoredWidget*>(this->itemWidget(dragItem, 0)); // Récupère le widget QTreeWidget::dropEvent(event); // Classique drop effectué par QTreeWidget // Le widget est alors perdu == NULL //ColoredWidget *colorWidgetAfter =static_cast<ColoredWidget*>(this->itemWidget(dragItem, 0)); // Si je créer un nouveau widget avec les mêmes attributs, cela fonctionne /*ColoredWidget *newColorWidget = new ColoredWidget(colorWidget->Name(), colorWidget->Color()); this->setItemWidget(dragItem, 0, newColorWidget);*/ // Si je tente d'utiliser l'ancien pointeur du widget toujours valide, ça ne fonctionne plus... this->setItemWidget(dragItem, 0, colorWidget); }
Savez vous pourquoi je ne peux pas re-utilisé la pointeur valide du widget présent avant le drag ?
PS : en pièce jointe le prototype en entier !
Partager