【qt】QListWidget 拖拽更改顺序


QListWidget

拖拽更改顺序

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

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

listWidget = new YYListWidget(ui->widget_todo);

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

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

yylistwidget.cpp

#include "yylistwidget.h"
?
#include
#include
#include
#include
#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
#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
?
?
QT