参考链接:QTreeWidget通过拖拽item调整item顺序
设置QTreeWidget,启用拖拽功能
// 开启拖拽功能
treeWidget->setDragEnabled(true);
// 设置控件内部移动
treeWidget->setDragDropMode(QAbstractItemView::InternalMove);
// 设置移动模式
treeWidget->setDefaultDropAction(Qt::MoveAction);
顶部子项设置,禁止其他item放入到当前item的子树中。
QTreeWidgetItem *pChild = new QTreeWidgetItem();
// 关闭item的Drop功能
// 禁用该选项可以防止顶部子项被放入到另一个顶部子项的子节点中
pChild->setFlags(pChild->flags() & ~Qt::ItemIsDropEnabled);
非顶部子项设置,禁止拖拽,并且禁止其他item放入到当前item的子树中
auto childItem = new QTreeWidgetItem(item, QStringList() << "1" << "2");
// 防止移动
childItem->setFlags(childItem->flags() & ~Qt::ItemIsDragEnabled);
// 关闭子item的Drop功能。
// 防止其他item项被放入到该item的子树中
childItem->setFlags(childItem->flags() & ~Qt::ItemIsDropEnabled);