JListWidget.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "JListWidget.h"
  2. JListWidget::JListWidget(QWidget* parent /*= nullptr*/)
  3. : QListWidget(parent)
  4. {
  5. setDragDropMode(QAbstractItemView::InternalMove);
  6. setSelectionMode(QAbstractItemView::SingleSelection);
  7. setAcceptDrops(true);
  8. setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
  9. setStyleSheet(
  10. "QListWidget { background: #e6e6ed; border: 1px solid #ccc; }"
  11. "QListWidget::item { border-bottom: 1px solid #ddd; }"
  12. "QListWidget::item:hover { background: #e0e0ff; }"
  13. "QListWidget::item {"
  14. "border-bottom: 1px solid blue;"
  15. "padding: 5px;"
  16. "}"
  17. "QListWidget::item:last {"
  18. " border-bottom: none;"
  19. "}"
  20. );
  21. }
  22. void JListWidget::dragEnterEvent(QDragEnterEvent* event)
  23. {
  24. if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist"))
  25. {
  26. event->acceptProposedAction();
  27. }
  28. else
  29. {
  30. event->ignore();
  31. }
  32. }
  33. void JListWidget::dropEvent(QDropEvent* event)
  34. {
  35. if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist"))
  36. {
  37. QListWidget::dropEvent(event); // 调用默认的 dropEvent 来处理排序
  38. event->acceptProposedAction();
  39. // 发信号通知其他列表更新
  40. emit itemsReordered();
  41. }
  42. else
  43. {
  44. event->ignore();
  45. }
  46. }