Hello !
Je suis en train de regarder comment faire un drag & drop d'éléments dans un QTreeWidget. Il faut mettre les bonnes options et redéfinir la méthode dropEvent :
Mais dans mon cas j'aimerai pouvoir ne bouger que les éléments parents. Dans le code je récupère l'élément d'arrivée (item), mais comment avoir l'élément déplacé ??
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 class TreeWidget : public QTreeWidget { protected: virtual void dropEvent(QDropEvent *event) override { QModelIndex index = indexAt(event->pos()); if (!index.isValid()) { // just in case event->setDropAction(Qt::IgnoreAction); return; } QTreeWidgetItem* item = itemFromIndex(index); qDebug() << "drop on item" << item->text(0); QTreeWidget::dropEvent(event); } }; int main() { TreeWidget *listWidget = new TreeWidget; listWidget->setSelectionMode(QAbstractItemView::SingleSelection); listWidget->setDragEnabled(true); listWidget->viewport()->setAcceptDrops(true); listWidget->setDropIndicatorShown(true); listWidget->setDragDropMode(QAbstractItemView::InternalMove); }
Faut-il redéfinir une méthode drag ?? Lancer le drag nous même depuis mousePressEvent ?? Je suis un peu perdu pour faire ça proprement, je ne trouve pas de méthode propre.
Merci.![]()
Partager