自定义模型的拖动
便捷类的拖动实现很简单,今天我们介绍自己定义的ListModel模型如何实现拖动。在之前的ListModel项目基础上,我们先对View视图实现拖动操作.
1 | //设置选择模式为单选 |
对模型实现拖动
在ListModel添加声明
1 | //编写拖动逻辑 |
自定义一个类型,用来表示拖动导出的类型
1 | //拖放时导出的类型 |
将拖动的数据放入mimedata中
1 | QMimeData *StringListModel::mimeData(const QModelIndexList &indexes) const |
将拖放的数据从mimedata中导出
1 | bool StringListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) |
为了能让我们的item拖动,需要重新实现flags变量,使其支持拖放
1 | Qt::ItemFlags StringListModel::flags(const QModelIndex& index) const{ |
然后我们设置支持的拖放动作为移动和复制
1 | Qt::DropActions StringListModel::supportedDropActions() const |
拖动效果