#pragma once #include "Common.h" #include #include #define FORMAT_DRAG_TOOL "treeItem" /// /// 本类用于存储拖拽时携带的相关信息(例如tool树形控件等) /// class DragMimeData : public QMimeData { Q_OBJECT public: DragMimeData() :QMimeData() { m_pDragTool = nullptr; } // 设置拖动的数据控件指针和类型信息 void setDragData(QString mimeType, const STATIC_TOOL* pItem) { m_DataFormat << mimeType; m_pDragTool = pItem; } // 返回对应的数据类型 QStringList formats() const { return m_DataFormat; } // 返回拖动的树形控件中的工具信息指针 const STATIC_TOOL* DragItemData() const { return m_pDragTool; } protected: // 返回对应类型的数据指针 QVariant retrieveData(const QString& mimetype, QVariant::Type preferredType) const override { if (mimetype == FORMAT_DRAG_TOOL) { return m_pDragTool; } else { return QMimeData::retrieveData(mimetype, preferredType); } } private: // 从树形控件中拖动的工具信息 const STATIC_TOOL* m_pDragTool; // 数据的存储格式 QStringList m_DataFormat; };