拖放QTreeView不起作用

时间:2018-08-15 12:51:54

标签: c++ qt qtreeview

我一直关注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);

动画效果很好,但是在删除项目后,什么也没有发生。有人可以指出我正确的方向吗?

0 个答案:

没有答案