logplus/logPlus/qmytreewidget.cpp
2025-11-21 10:14:28 +08:00

59 lines
2.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "qmytreewidget.h"
QMyTreeWidget::QMyTreeWidget(QWidget *parent)
{
setDragEnabled(true);
setDefaultDropAction(Qt::MoveAction); // 或者 Qt::CopyAction取决于你的需求
setAcceptDrops(true);
setDropIndicatorShown(true);
}
QMyTreeWidget::~QMyTreeWidget()
{
}
void QMyTreeWidget::startDrag(Qt::DropActions supportedActions)
{
if(currentItem()->parent()==NULL)
{
//分类节点不能拖动
return;
}
// 创建拖拽事件
QTreeWidgetItem *item = currentItem();
QString strTreeTag = item->data(0, Qt::UserRole).toString();
if (strTreeTag == "root")
{
//根节点(项目名称)
}
else if (strTreeTag == "curveObject" || strTreeTag == "waveObject" || strTreeTag == "tableObject"){
//曲线
QString strSlfName = item->data(0, Qt::UserRole+1).toString();
QString strWellName = item->data(0, Qt::UserRole+2).toString();
//曲线对象(AC、BS...)
QMimeData *mimeData = new QMimeData;
// 这里需要根据你的item数据来设置mimeData例如
mimeData->setText(strSlfName + "#@@#"+ strWellName + "#@@#" +item->text(0)+ "#@@#" + strTreeTag);
// 创建QDrag对象
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
// 可以设置拖拽时的光标图标
QRect itemRect = visualItemRect(item); // 获取项的矩形区域
QPixmap itemPixmap = QWidget::grab(itemRect);//QPixmap::grabWidget(this, itemRect); // 获取项的屏幕截图
// 调整拖拽光标的热点,使其位于截图的中心
drag->setPixmap(itemPixmap);
// 执行拖拽操作
Qt::DropAction dropAction = drag->exec(supportedActions, Qt::MoveAction);
/*if (dropAction == Qt::MoveAction) {
// 处理拖拽结束的逻辑,例如从界面上移除拖拽的项
for (QTreeWidgetItem *item : items) {
this->takeTopLevelItem(this->indexOfTopLevelItem(item));
}
}*/
}
}