目录
1.重写
2.本身自带拖拽功能
关于QLisWidget的item拖拽操作,也可以某个控件拖拽思路
1.重写
重写相当于要重写这些事件函数
void mousePressEvent(QMouseEvent *event); //鼠标按下
void mouseMoveEvent(QMouseEvent *event); //鼠标移动
void dragEnterEvent(QDragEnterEvent *event); //拖拽输入事件
void dragMoveEvent(QDragMoveEvent *event); //小部件上进行拖放操作
void dropEvent(QDropEvent *event); //拖拽事件
这里又有多例子
QT QListWidget 实现鼠标拖拽功能_qt listwidget item 拖动-CSDN博客
QT 拖拽 QListWidget发送,Qgraphicview接收_qgraphicsview拖拽事件_小飞侠hello的博客-CSDN博客
2.本身自带拖拽功能
有些控件本身提供了拖拽功能,而且Qt页提供拖拽机制可在帮助文档中通过Drag and Drop关键字查看
比如QTabWIdget或者QListWidget
setDragDropMode(QAbstractItemView::DragDropMode)(设置拖放的样式)
dragDropMode(返回拖放的样式)
QAbstractItemView::NoDragDrop | 0 | Does not support dragging or dropping. |
QAbstractItemView::DragOnly | 1 | The view supports dragging of its own items |
QAbstractItemView::DropOnly | 2 | The view accepts drops |
QAbstractItemView::DragDrop | 3 | The view supports both dragging and dropping |
QAbstractItemView::InternalMove | 4 | The view accepts move (not copy) operations only from itself. |
setDragEnabled(设置是否支持拖动)
setSelectionBehavior(QAbstractItemView::SelectionBehavior)(拖拽行为)
然后根据控件重写QEvent::Drop事件处理(拖拽事件处理可以参照链接2,大致意思获取拖拽数据,然后需求处理逻辑)
参考
拖拽数据
【Qt】Qt中的拖放操作实现——拖放文件以及自定义拖放操作_acceptproposedaction-CSDN博客
拖拽事件
QT QTableWidget QListWidget 整行拖放移动位置_qtablewidget 拖拽_蜉蝣之翼❉的博客-CSDN博客 QT(4)-QAbstractItemView - 知乎