我有一個QTreeWidget,它只顯示一個根節點和一個子級節點。 我需要允許子節點的重新排序。 他們絕不能重新考慮。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);
在這一點上,我可以拖動一個子項目和「re-inser t「在子項目列表中。我也可以將它移到根級別 - 我不想要。
我正在使用QT Creator v3,所以QTreeWidget在我的UI定義文件中。
我在這裏錯過了什麼嗎?
也許這將幫助:http://www.qtcentre.org/threads/32354-Qt-ItemIsDropEnabled-ignored-in -dragDropMode-QAbstractItemView-InternalMove – fritzone