子类化treewidget
然后重写
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
最好在插入item的时候指定层数,比如
第一层可以item->setDate(0, Qt::userRole+1, 0);
第二层可以item->setDate(0, Qt::userRole+1, 1);
然后在dragMoveEvent的时候判断
- void myTreeWidget::dragMoveEvent(QDragMoveEvent *event)
- {
- myTreeWidget *source =qobject_cast<myTreeWidget *>(event->source());
- if(source && source->savedItem && desc ){
- int src_data = source->savedItem->data(0, Qt::userRole+1).toInt();
- int desc_data = desc->data(0, Qt::userRole+1).toInt();
- if(src_data >desc_data){
- return QTreeWidget::dragMoveEvent(event);
- }else{
- event->ignore();
- }
- }
- }
差不多就这样,其他几个重写的就是做写判断什么的