我正在尝试实现可重新排序的列表视图。我在表单中创建了一个QListView,设置了以下设置:
d->widget->ui.listView_searches->setDragEnabled(true);
d->widget->ui.listView_searches->setAcceptDrops(true);
d->widget->ui.listView_searches->setDropIndicatorShown(true);
d->widget->ui.listView_searches->setSelectionMode(QAbstractItemView::SingleSelection);
d->widget->ui.listView_searches->setSelectionBehavior(QAbstractItemView::SelectRows);
d->widget->ui.listView_searches->setDragDropMode(QAbstractItemView::InternalMove);
d->widget->ui.listView_searches->setDefaultDropAction(Qt::MoveAction);
在我重新实现的模型中
Qt::DropActions Websearch::EnginesModel::supportedDropActions() const {
return Qt::MoveAction;
}
Qt::ItemFlags Websearch::EnginesModel::flags(const QModelIndex &index) const {
if (index.isValid())
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | QAbstractItemModel::flags(index);
else
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled | QAbstractItemModel::flags(index);
}
此外,我实现了insert-,remove-和moveRows。
当我在列表中拖动项目时,我会看到视觉拖放指示器。释放鼠标按钮时,拖动的项目将被删除,并插入新的默认项目。我做错了什么?