【qt】QListWidget 拖拽更改顺序

QListWidget

拖拽更改顺序

先加入这个类(重载,实现拖拽改变list顺序);

然后对于想要用这个重载类的类,构造函数加上("ui->widget_todo",建议在你想添加这个QListWidget地方先建一个widget,我这里取名是widget_todo,就是在这个里面添加)

listWidget = new YYListWidget(ui->widget_todo);

QListWidget有的函数重载类一样使用;

下面是类详细代码(类忘记是转载谁的博客的)

yylistwidget.cpp

#include "yylistwidget.h"

#include <QApplication>
#include <QDrag>
#include <QKeyEvent>
#include <QMimeData>
#include "QDebug"

YYListWidget::YYListWidget(QWidget *parent) : QListWidget(parent)
{

  this->setAcceptDrops(true);
  this->setDragEnabled(true);
}

YYListWidget::~YYListWidget()
{

}


// 接收放置后添加一项

void YYListWidget::dropEvent(QDropEvent *event)

{
    qDebug()<<"dropEvent";
    QListWidget::dropEvent(event);

    performDrag();
    //删除复制的

}

// 实现拖动,删除最开始的那个项
void YYListWidget::performDrag()

{
  QListWidgetItem *item = this->takeItem(this->currentRow ());
  delete  item;
}

yylistwidget.h

#ifndef YYLISTWIDGET_H
#define YYLISTWIDGET_H

#include <QWidget>
#include "QListWidget"

class YYListWidget : public QListWidget
{
   Q_OBJECT
public:
   explicit YYListWidget(QWidget *parent = Q_NULLPTR);
   ~YYListWidget();

   void dropEvent(QDropEvent *event);
   void performDrag();

signals:

public slots:

private:


};

#endif // YYLISTWIDGET_H

posted @ 2021-02-04 15:08  carrotmvp  阅读(2210)  评论(0编辑  收藏  举报