我一直关注this tutorial,以便能够拖放QTreeView
的项目。
我已完成所有描述的步骤-模型的替代方法:
class DragAndDropModel : public QFileSystemModel
{
public:
DragAndDropModel(QWidget *parent = Q_NULLPTR) : QFileSystemModel(parent) {}
Qt::DropActions supportedDropActions() const override
{
return Qt::CopyAction | Qt::MoveAction;
}
Qt::ItemFlags flags(const QModelIndex &index) const override
{
if (!index.isValid())
return 0;
return Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | QAbstractItemModel::flags(index);
}
};
然后将此模型设置为QTreeView
实例并启用拖放
m_model->setRootPath(path);
m_treeView->setModel(m_model);
m_treeView->setRootIndex(m_model->index(path));
m_treeView->setDragDropMode(QAbstractItemView::InternalMove);
m_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_treeView->setDragEnabled(true);
m_treeView->setAcceptDrops(true);
m_treeView->setDropIndicatorShown(true);
动画效果很好,但是在删除项目后,什么也没有发生。有人可以指出我正确的方向吗?