DragMimeData.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include "Common.h"
  3. #include <QDrag>
  4. #include <QMimeData>
  5. #define FORMAT_DRAG_TOOL "treeItem"
  6. /// <summary>
  7. /// 本类用于存储拖拽时携带的相关信息(例如tool树形控件等)
  8. /// </summary>
  9. class DragMimeData : public QMimeData
  10. {
  11. Q_OBJECT
  12. public:
  13. DragMimeData() :QMimeData()
  14. {
  15. m_pDragTool = nullptr;
  16. }
  17. // 设置拖动的数据控件指针和类型信息
  18. void setDragData(QString mimeType, const STATIC_TOOL* pItem)
  19. {
  20. m_DataFormat << mimeType;
  21. m_pDragTool = pItem;
  22. }
  23. // 返回对应的数据类型
  24. QStringList formats() const
  25. {
  26. return m_DataFormat;
  27. }
  28. // 返回拖动的树形控件中的工具信息指针
  29. const STATIC_TOOL* DragItemData() const
  30. {
  31. return m_pDragTool;
  32. }
  33. protected:
  34. // 返回对应类型的数据指针
  35. QVariant retrieveData(const QString& mimetype, QVariant::Type preferredType) const override
  36. {
  37. if (mimetype == FORMAT_DRAG_TOOL)
  38. {
  39. return m_pDragTool;
  40. }
  41. else
  42. {
  43. return QMimeData::retrieveData(mimetype, preferredType);
  44. }
  45. }
  46. private:
  47. // 从树形控件中拖动的工具信息
  48. const STATIC_TOOL* m_pDragTool;
  49. // 数据的存储格式
  50. QStringList m_DataFormat;
  51. };