logplus/logPlus/formtracktop.cpp

275 lines
9.0 KiB
C++
Raw Normal View History

#include "FormTrackTop.h"
#include "ui_FormTrackTop.h"
#include "CallManage.h"
#include <QDebug>
#include <QMimeData>
#include <QPushButton>
#include <QVBoxLayout>
#include "geometryutils.h"
#include "formwell.h"
//曲线名称(单个)
FormTrackTop::FormTrackTop(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor) :
FormBase(parent, strSlfName, strWellName),
ui(new Ui::FormTrackTop)
{
ui->setupUi(this);
//
setAcceptDrops(true);
//m_pFWell = qobject_cast<FormWell*>(parent);
//m_strSlfName = strSlfName;
//m_strWellName = strWellName;
m_strTrackName = strTrackName;
m_font = QFont("微软雅黑", 10);
m_fontColor = QColor(0,0,0);
}
FormTrackTop::~FormTrackTop()
{
delete ui;
}
// void FormTrackTop::setBorderFlags(BorderFlags flags)
// {
// m_BorderFlags = flags;
// }
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());
}
}
QJsonObject FormTrackTop::makeJson()
{
// 创建根对象
QJsonObject rootObj;
//
rootObj["WellName"] = m_strWellName; // 道名称
rootObj["TrackName"] = m_strTrackName; // 道名称
rootObj["TrackW"] = m_nTrackW; // 道宽
rootObj["Font"] = m_font.toString();
rootObj["FontColor"] = m_fontColor.name();
return rootObj;
}
void FormTrackTop::paintEvent(QPaintEvent* event)
{
FormBase::paintEvent(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)
bool bVer = false;
QString text = m_strTrackName;
QFontMetrics fm1(m_font);
QRect textRect = fm1.boundingRect(m_strTrackName);
if (textRect.width() > rect.width())
{
text = "";
for (int i = 0; i < m_strTrackName.size(); i++) {
if (!i)text += m_strTrackName.at(i);
else {
text += "\n";
text += m_strTrackName.at(i);
}
}
}
painter.drawText(rect.left(), rect.top(), rect.width(), rect.height(), Qt::AlignCenter, text);
//rect.setLeft(rect.left() + 1);
//rect.setTop(rect.top() + 1);
//// 3. 准备绘制边框
//painter.save();
//painter.setPen(QPen(m_pFWell->getBorderGridProperty().m_clor,
// m_pFWell->getBorderGridProperty().m_nWidth,
// (Qt::PenStyle)m_pFWell->getBorderGridProperty().m_nType)); // 颜色、宽度可自定义
//// 上边框
//if (m_BorderFlags & TopBorder) {
// painter.drawLine(rect.topLeft(), rect.topRight());
//}
//// 下边框
//if (m_BorderFlags & BottomBorder) {
// painter.drawLine(rect.bottomLeft(), rect.bottomRight());
//}
//// 左边框
//if (m_BorderFlags & LeftBorder) {
// painter.drawLine(rect.topLeft(), rect.bottomLeft());
//}
//// 右边框
//if (m_BorderFlags & RightBorder) {
// painter.drawLine(rect.topRight(), rect.bottomRight());
//}
//painter.restore();
}
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);
}
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);
}
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
event->accept();
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
}
}
else
{
// 如果数据格式不正确,不接受拖拽事件
event->ignore();
}
}
else
{
// 如果数据格式不正确,不接受拖拽事件
event->ignore();
}
// 恢复鼠标光标
//QApplication::restoreOverrideCursor();
}