2026-01-29 09:35:53 +08:00
|
|
|
|
#include "FormTrackTop.h"
|
|
|
|
|
|
#include "ui_FormTrackTop.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "CallManage.h"
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
#include <QMimeData>
|
|
|
|
|
|
#include <QPushButton>
|
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
#include "geometryutils.h"
|
|
|
|
|
|
|
|
|
|
|
|
//曲线名称(单个)
|
|
|
|
|
|
FormTrackTop::FormTrackTop(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor) :
|
|
|
|
|
|
QWidget(parent),
|
|
|
|
|
|
ui(new Ui::FormTrackTop)
|
|
|
|
|
|
{
|
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
//
|
|
|
|
|
|
setAcceptDrops(true);
|
|
|
|
|
|
|
|
|
|
|
|
m_strSlfName = strSlfName;
|
|
|
|
|
|
m_strWellName = strWellName;
|
|
|
|
|
|
m_strTrackName = strTrackName;
|
|
|
|
|
|
|
|
|
|
|
|
m_font = QFont("微软雅黑", 10);
|
|
|
|
|
|
m_fontColor = QColor(0,0,0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FormTrackTop::~FormTrackTop()
|
|
|
|
|
|
{
|
|
|
|
|
|
delete ui;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-30 13:36:32 +08:00
|
|
|
|
void FormTrackTop::setTrackTopPropert(QJsonObject topObj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (topObj.contains("Font"))
|
|
|
|
|
|
{
|
|
|
|
|
|
QJsonValue value = topObj.value("Font");
|
|
|
|
|
|
this->m_font.fromString(value.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
if (topObj.contains("FontColor"))
|
|
|
|
|
|
{
|
|
|
|
|
|
QJsonValue value = topObj.value("FontColor");
|
|
|
|
|
|
this->m_fontColor.setNamedColor(value.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-29 09:35:53 +08:00
|
|
|
|
QJsonObject FormTrackTop::makeJson()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 创建根对象
|
|
|
|
|
|
QJsonObject rootObj;
|
|
|
|
|
|
//
|
2026-01-30 13:36:32 +08:00
|
|
|
|
rootObj["WellName"] = m_strWellName; // 道名称
|
|
|
|
|
|
rootObj["TrackName"] = m_strTrackName; // 道名称
|
|
|
|
|
|
rootObj["TrackW"] = m_nTrackW; // 道宽
|
2026-01-29 09:35:53 +08:00
|
|
|
|
rootObj["Font"] = m_font.toString();
|
|
|
|
|
|
rootObj["FontColor"] = m_fontColor.name();
|
|
|
|
|
|
|
|
|
|
|
|
return rootObj;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void FormTrackTop::paintEvent(QPaintEvent* event)
|
|
|
|
|
|
{
|
|
|
|
|
|
QPainter painter(this);
|
|
|
|
|
|
QRect rect = this->rect();
|
|
|
|
|
|
//背景透明
|
|
|
|
|
|
painter.fillRect(rect.left(), rect.top(), rect.width(), rect.height(), QColor(0, 0, 0, 0)); //QColor(67, 67, 67, 100)
|
|
|
|
|
|
|
|
|
|
|
|
painter.setBrush(Qt::NoBrush); // 确保文字不被填充色遮挡
|
|
|
|
|
|
painter.setFont(m_font);
|
|
|
|
|
|
painter.setPen(m_fontColor); // fontColor QColor(220, 220, 220)
|
|
|
|
|
|
painter.drawText(rect.left(), rect.top(), rect.width(), rect.height(), Qt::AlignCenter, m_strTrackName);
|
|
|
|
|
|
|
|
|
|
|
|
QWidget::paintEvent(event);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void FormTrackTop::dragEnterEvent(QDragEnterEvent* event)
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug() << "FormTrackTop dragEnterEvent";
|
|
|
|
|
|
|
|
|
|
|
|
const QMimeData* mimeData = event->mimeData();
|
|
|
|
|
|
// 检查拖拽的数据类型,确定是否接受拖拽
|
|
|
|
|
|
if (event->mimeData()->hasFormat("text/plain")) {
|
|
|
|
|
|
event->acceptProposedAction();
|
|
|
|
|
|
//QApplication::setOverrideCursor(Qt::PointingHandCursor); // 设置鼠标为可添加状态
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
event->ignore();
|
|
|
|
|
|
//QApplication::setOverrideCursor(Qt::ForbiddenCursor); // 设置鼠标为不可添加状态
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void FormTrackTop::dragMoveEvent(QDragMoveEvent* event)
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug() << "FormTrackTop dragMoveEvent";
|
|
|
|
|
|
|
|
|
|
|
|
// 可以在这里更新鼠标的位置,根据位置判断是否可以放置
|
|
|
|
|
|
// ...
|
|
|
|
|
|
//dragEnterEvent(event); // 可以使用相同的逻辑
|
|
|
|
|
|
//event->accept();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void FormTrackTop::dropEvent(QDropEvent* event)
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug() << "FormTrackTop dropEvent";
|
|
|
|
|
|
|
|
|
|
|
|
// 处理放置动作,更新UI或数据
|
|
|
|
|
|
if (event->mimeData()->hasFormat("text/plain")) {
|
|
|
|
|
|
// 获取拖拽的数据
|
|
|
|
|
|
QString strExtern = event->mimeData()->text();
|
|
|
|
|
|
qDebug() << strExtern;
|
|
|
|
|
|
//
|
|
|
|
|
|
QStringList list = strExtern.split("#@@#");//QString字符串分割函数
|
|
|
|
|
|
if (list.size() > 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
QString strSlfName = list[0];
|
|
|
|
|
|
QString strWellName = list[1];
|
|
|
|
|
|
QString strLineName = list[2];
|
|
|
|
|
|
QString strType = list[3];
|
|
|
|
|
|
|
|
|
|
|
|
qDebug() << "strSlfName:" << strSlfName<< " strWellName:" << strWellName<< " strLineName:" << strLineName << " strType:" << strType;
|
|
|
|
|
|
|
|
|
|
|
|
if(m_strWellName == strWellName)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(strType=="curveObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建曲线
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddLine(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="waveObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建波列
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddWave(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="tableObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建表格曲线
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddTableLine(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
2026-03-31 15:44:15 +08:00
|
|
|
|
else if(strType=="depthObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug() << "新建深度";
|
|
|
|
|
|
//新建曲线
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddDepth(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="ganzhuangtuObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建杆状图
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddGanZhuangTu(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="JyktObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建井眼垮塌矢量图
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddJykt(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="DenvObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//新建井斜方位图
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddDenv(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="DrawImageObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//图像 成图
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddDrawImage(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="SantuyibiaoObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//斜井三图一表
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddSantuyibiao(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="CrackObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//裂缝
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddCrack(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="JiegutextObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//气测/FMT/射孔/文本
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddJiegutext(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="LogfaceObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//沉积相
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddLogface(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="MCalsObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//多臂井径
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddMCals(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(strType=="TubingstringObject")
|
|
|
|
|
|
{
|
|
|
|
|
|
//套管组件
|
|
|
|
|
|
emit CallManage::getInstance()->sig_AddTubingstring(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
|
|
|
|
|
|
}
|
2026-01-29 09:35:53 +08:00
|
|
|
|
// 接受拖拽事件
|
|
|
|
|
|
event->setDropAction(Qt::MoveAction);
|
|
|
|
|
|
event->accept();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// 如果井名不正确,不接受拖拽事件
|
|
|
|
|
|
event->ignore();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// 如果数据格式不正确,不接受拖拽事件
|
|
|
|
|
|
event->ignore();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// 如果数据格式不正确,不接受拖拽事件
|
|
|
|
|
|
event->ignore();
|
|
|
|
|
|
}
|
|
|
|
|
|
// 恢复鼠标光标
|
|
|
|
|
|
//QApplication::restoreOverrideCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
|