拖拽是编程中经常要用到的,我这里主要是实习了Treewidget之间直接拖拽Item,按下Ctrl键的话是copy,不按Ctrl则是Move。以下是实现代码
class TreeItemMimeData:public QMimeData
{
Q_OBJECT
public:
TreeItemMimeData():QMimeData()
{
m_pDragItem = NULL;
}
~TreeItemMimeData()
{
}
void SetDragData(QString mimeType , QTreeWidgetItem *pItem)
{
m_format<<mimeType;
m_pDragItem = pItem;
}
QStringList formats() const
{
return m_format;
}
const QTreeWidgetItem* DragItemData() const
{
return m_pDragItem;
}
protected:
QVariant retrieveData(const QString &mimetype, QVariant::Type preferredType) const
{
if (mimetype == "ItemMimeData")
{
return m_pDragItem;
}
else
{
return QMimeData::retrieveData(mimetype, preferredType);
}
}
private:
const QTreeWidgetItem *m_pDragItem;
QStringList m_format;
};
class MyTreeWidget:public QTre