Ich habe ein QTreeWidget, das nur einen Stammknoten und nur eine Ebene untergeordneter Knoten anzeigt. Ich muss die Neuordnung der untergeordneten Knoten erlauben. Sie dürfen nie wieder re-parented werden.QTreeWidget Neuordnen untergeordneter Objekte durch Ziehen
Dies ist, wie ich das Ziehen von Elementen in der QTreeWidget aktivieren:
ui->levelElements->setSelectionMode(QAbstractItemView::SingleSelection);
ui->levelElements->setDragEnabled(true);
ui->levelElements->viewport()->setAcceptDrops(true);
ui->levelElements->setDropIndicatorShown(true);
ui->levelElements->setDragDropMode(QAbstractItemView::InternalMove);
Das Stammelement wie folgt eingefügt:
pItem = new QTreeWidgetItem(ui->levelElements);
pItem->setText(0, node.firstChild().nodeValue());
pItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled);
Als ich ein Kind in die Ansicht einzufügen, ist es wie folgt deklariert:
pItem = new QTreeWidgetItem();
pItem->setText(0, strFileName);
pItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);
pTreeRoot->addChild(pItem);
An diesem Punkt kann ich ein Kind Element ziehen und "Re-Inser t "es in der Liste der Kinderartikel. Ich kann es auch auf die Root-Ebene verschieben - was ich nicht will.
Ich verwende QT Creator v3 und so befindet sich das QTreeWidget in meiner UI-Definitionsdatei.
Habe ich hier etwas verpasst?
Vielleicht hilft dies: http://www.qtcentre.org/threads/32354-Qt-ItemIsDropEnabled-ignored-in dragDropMode-QAbstractItemView-InternalMove – fritzone