Glisser-déposer dans un QTreeWidget
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 :
Code:
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);
} |
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é ??
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. :roll:
Merci. ;)