You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 line
789 B

  1. #ifndef MYLISTWIDGET_H
  2. #define MYLISTWIDGET_H
  3. #include <QDrag>
  4. #include <QListWidget>
  5. #include <QMimeData>
  6. class MyListWidget : public QListWidget {
  7. public:
  8. using QListWidget::QListWidget;
  9. protected:
  10. void startDrag(Qt::DropActions supportedActions) override
  11. {
  12. QListWidgetItem *item = currentItem();
  13. if (!item) return;
  14. QDrag *drag = new QDrag(this);
  15. QMimeData *mimeData = new QMimeData;
  16. QString type = item->data(Qt::UserRole).toString();
  17. mimeData->setData("application/x-component", type.toUtf8());
  18. drag->setMimeData(mimeData);
  19. drag->setPixmap(item->icon().pixmap(iconSize()));
  20. drag->setHotSpot(drag->pixmap().rect().center());
  21. drag->exec(Qt::CopyAction);
  22. }
  23. };
  24. #endif // MYLISTWIDGET_H