【发布时间】:2014-02-12 13:41:11
【问题描述】:
我有一个 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);
根项是这样插入的:
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);
此时,我可以拖动一个子项并将其“重新插入”到子项列表中。我也可以将它移到根级别 - 这是我不想要的。
我使用的是 QT Creator v3,所以 QTreeWidget 在我的 UI 定义文件中。
我错过了什么吗?
【问题讨论】:
-
也许这会有所帮助:qtcentre.org/threads/…
标签: c++ qt drag-and-drop qtreewidget qtreewidgetitem