12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #include "Common.h"
- #include <QDrag>
- #include <QMimeData>
- #define FORMAT_DRAG_TOOL "treeItem"
- /// <summary>
- /// 本类用于存储拖拽时携带的相关信息(例如tool树形控件等)
- /// </summary>
- 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;
- };
|