단일 루트 노드와 한 수준의 자식 노드 만 표시하는 QTreeWidget이 있습니다. 하위 노드의 재정렬을 허용해야합니다. 그들은 다시 부모가되어서는 안됩니다. 루트 항목은 다음과 같이 삽입QTreeWidget 드래그하여 하위 항목 재정렬
ui->levelElements->setSelectionMode(QAbstractItemView::SingleSelection);
ui->levelElements->setDragEnabled(true);
ui->levelElements->viewport()->setAcceptDrops(true);
ui->levelElements->setDropIndicatorShown(true);
ui->levelElements->setDragDropMode(QAbstractItemView::InternalMove);
:
이
내가 QTreeWidget에있는 항목의 드래그 가능하게하는 방법이다 내가보기에 아이를 삽입 할 때pItem = new QTreeWidgetItem(ui->levelElements);
pItem->setText(0, node.firstChild().nodeValue());
pItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled);
를, 그것은이다
pItem = new QTreeWidgetItem();
pItem->setText(0, strFileName);
pItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);
pTreeRoot->addChild(pItem);
이 시점에서 하위 항목을 드래그하고 '다시 삽입'할 수 있습니다. t "를 자식 항목 목록에 추가합니다. 나는 또한 그것을 루트 레벨로 옮길 수 있는데, 나는 그것을 원하지 않는다.
QT Creator v3을 사용 중이므로 QTreeWidget이 내 UI 정의 파일 내에 있습니다.
여기에 뭔가가 빠졌습니까?
어쩌면이 도움이됩니다 : http://www.qtcentre.org/threads/32354-Qt-ItemIsDropEnabled-ignored-in -dragDropMode-QAbstractItemView-InternalMove – fritzone