条目的拖拽
最后更新于:2022-04-02 02:11:24
[TOC]
## 条目的拖拽
QListWidget、QTableWidget、 QTreeWidget 自带了拖拽条目的功能,拖拽通常有两种应用场景:
1. 第一种场景是内部拖拽
```
ui->treeWidget->setDragDropMode(QAbstractItemView::InternalMove);
```
2. 第二种场景是跨界拖拽
步骤:
(1)设置控件的 dragEnabled 属性为 true;
(2)设置控件的视口 viewport() 的 acceptDrops 属性为 true;
(3)为用户显示拖拽动作的鼠标效果,设置控件的 showDropIndicator 属性为 true;
(4)设置控件的拖拽模式为能拖能拽的 QAbstractItemView::DragDrop 。
单选实例
```
QListWidget *listWidget = new QListWidget(this);
listWidget->setSelectionMode(QAbstractItemView::SingleSelection); //单选模式
listWidget->setDragEnabled(true); //可以拖出源条目
listWidget->viewport()->setAcceptDrops(true); //可以接收拖入
listWidget->setDropIndicatorShown(true); //启用拖拽的显示效果
listWidget->setDragDropMode(QAbstractItemView::DragDrop); //使用能拖能拽的模式
```
外部拖拽
```
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //单选模式
ui->tableWidget->setDragEnabled(true); //可以拖出源条目
ui->tableWidget->viewport()->setAcceptDrops(true); //视口可以接收拖入
ui->tableWidget->setDropIndicatorShown(true); //启用拖拽的显示效果
ui->tableWidget->setDragDropMode(QAbstractItemView::DragDrop); //使用能拖能拽的模式
```
';