226 lines
7.0 KiB
C++
226 lines
7.0 KiB
C++
#include "formwell.h"
|
|
#include "ui_formwell.h"
|
|
#include "CallManage.h"
|
|
|
|
extern int g_iOneWidth; //道宽
|
|
extern int g_iY1;
|
|
extern int g_iY2;
|
|
extern double g_dPixelPerCm;//每厘米像素数
|
|
extern int g_iScale;
|
|
|
|
//井+道名
|
|
FormWell::FormWell(QWidget *parent, QString strWellName) :
|
|
QWidget(parent),
|
|
ui(new Ui::FormWell)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
m_strWellName = strWellName;
|
|
|
|
//
|
|
ui->tableWidget->verticalHeader()->hide(); //行
|
|
//ui->tableWidget->horizontalHeader()->hide();//列
|
|
int rowcount = 3; //总行数
|
|
ui->tableWidget->setRowCount(rowcount); //动态设置行数
|
|
ui->tableWidget->horizontalHeader()->setFixedHeight(3);
|
|
|
|
//关联信号槽
|
|
connect(CallManage::getInstance(), SIGNAL(sig_NewTrack(QString, QString, QString, QString)), this, SLOT(s_NewTrack(QString, QString, QString, QString)));
|
|
//关联信号槽
|
|
connect(CallManage::getInstance(), SIGNAL(sig_NewTrack_No_Line(QString, QString, QString)), this, SLOT(s_NewTrack_No_Line(QString, QString, QString)));
|
|
|
|
//曲线选中,置顶
|
|
connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString)));
|
|
}
|
|
|
|
FormWell::~FormWell()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void FormWell::s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName)
|
|
{
|
|
//选中了曲线置顶
|
|
//取消表格选中状态
|
|
ui->tableWidget->clearSelection();
|
|
}
|
|
|
|
void FormWell::s_NewTrack(QString strUuid, QString strWellName, QString strSlfName, QString strLineName)
|
|
{
|
|
//判断当前井是否与自己同名
|
|
if(strUuid != m_strUuid || strWellName != m_strWellName)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//因为tableWidget需要提前规定好行数与列数
|
|
int rowcount = 3; //总行数
|
|
int columnCount = ui->tableWidget->columnCount();//总列数
|
|
//增加1列
|
|
ui->tableWidget->setColumnCount(columnCount+1);
|
|
//设置列宽
|
|
ui->tableWidget->setColumnWidth(columnCount, g_iOneWidth);
|
|
|
|
//道名
|
|
QString strTrackName = "道" + QString::number(columnCount+1);
|
|
//标题
|
|
QTableWidgetItem *headerItem = new QTableWidgetItem("");
|
|
ui->tableWidget->setHorizontalHeaderItem(columnCount, headerItem);
|
|
|
|
//曲线名称栏
|
|
FormTrack *formTrack = new FormTrack(this, m_strWellName, strTrackName);
|
|
formTrack->m_strUuid = m_strUuid;
|
|
formTrack->show();
|
|
//曲线绘制栏
|
|
FormDraw *formDraw = new FormDraw(this, m_strWellName, strTrackName);
|
|
formDraw->m_strUuid = m_strUuid;
|
|
formDraw->m_formTrack = formTrack;
|
|
//
|
|
for(int i=0; i<rowcount; i++)
|
|
{
|
|
if(i==0)
|
|
{
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, 100);
|
|
//
|
|
QTableWidgetItem* item = new QTableWidgetItem(strTrackName);
|
|
item->setFlags(item->flags() & (~Qt::ItemIsEditable));
|
|
item->setTextAlignment(Qt::AlignCenter); //设置文本居中
|
|
ui->tableWidget->setItem(i, columnCount, item);
|
|
}
|
|
else if(i==1)
|
|
{
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, 300);
|
|
//
|
|
ui->tableWidget->setCellWidget(i, columnCount, formTrack);
|
|
}
|
|
else if(i==2)
|
|
{
|
|
double dHight = 0;
|
|
dHight = (g_iY2-g_iY1)*100.0/(double)g_iScale * g_dPixelPerCm;
|
|
if(dHight>32767)
|
|
{
|
|
dHight = 32767;
|
|
}
|
|
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, (int)dHight);//7582
|
|
//
|
|
ui->tableWidget->setCellWidget(i, columnCount, formDraw);
|
|
}
|
|
}
|
|
|
|
|
|
if(strLineName!="")
|
|
{
|
|
//新建曲线
|
|
emit CallManage::getInstance()->sig_AddLine(m_strUuid, strSlfName, strWellName, strTrackName, strLineName);
|
|
}
|
|
|
|
//ui->tableWidget->resizeColumnsToContents(); // 调整列宽以适应内容
|
|
//ui->tableWidget->update();
|
|
|
|
// 设置右键菜单策略
|
|
// ui->tableWidget_2->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
// connect(ui->tableWidget_2, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
|
|
}
|
|
|
|
void FormWell::s_NewTrack_No_Line(QString strUuid, QString strWellName, QString strTrackName)
|
|
{
|
|
//判断当前井是否与自己同名
|
|
if(strUuid != m_strUuid || strWellName != m_strWellName)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//因为tableWidget需要提前规定好行数与列数
|
|
int rowcount = 3; //总行数
|
|
int columnCount = ui->tableWidget->columnCount();//总列数
|
|
//增加1列
|
|
ui->tableWidget->setColumnCount(columnCount+1);
|
|
//设置列宽
|
|
ui->tableWidget->setColumnWidth(columnCount, g_iOneWidth);
|
|
|
|
//标题
|
|
QTableWidgetItem *headerItem = new QTableWidgetItem("");
|
|
ui->tableWidget->setHorizontalHeaderItem(columnCount, headerItem);
|
|
|
|
//曲线名称栏
|
|
FormTrack *formTrack = new FormTrack(this, m_strWellName, strTrackName);
|
|
formTrack->m_strUuid = m_strUuid;
|
|
formTrack->show();
|
|
//曲线绘制栏
|
|
FormDraw *formDraw = new FormDraw(this, m_strWellName, strTrackName);
|
|
formDraw->m_strUuid = m_strUuid;
|
|
formDraw->m_formTrack = formTrack;
|
|
//
|
|
for(int i=0; i<rowcount; i++)
|
|
{
|
|
if(i==0)
|
|
{
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, 100);
|
|
//
|
|
QTableWidgetItem* item = new QTableWidgetItem(strTrackName);
|
|
item->setFlags(item->flags() & (~Qt::ItemIsEditable));
|
|
item->setTextAlignment(Qt::AlignCenter); //设置文本居中
|
|
ui->tableWidget->setItem(i, columnCount, item);
|
|
}
|
|
else if(i==1)
|
|
{
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, 300);
|
|
//
|
|
ui->tableWidget->setCellWidget(i, columnCount, formTrack);
|
|
}
|
|
else if(i==2)
|
|
{
|
|
double dHight = 0;
|
|
dHight = (g_iY2-g_iY1)*100.0/(double)g_iScale * g_dPixelPerCm;
|
|
if(dHight>32767)
|
|
{
|
|
dHight = 32767;
|
|
}
|
|
|
|
//设置高度
|
|
ui->tableWidget->setRowHeight(i, (int)dHight);//7582
|
|
//
|
|
ui->tableWidget->setCellWidget(i, columnCount, formDraw);
|
|
}
|
|
}
|
|
}
|
|
|
|
QJsonObject FormWell::makeJson()
|
|
{
|
|
// 创建根对象
|
|
QJsonObject rootObj;
|
|
//
|
|
rootObj["WellName"] = m_strWellName;
|
|
|
|
// 创建JSON数组并填充数据
|
|
QJsonArray subcaseArray;
|
|
//
|
|
int columnCount = ui->tableWidget->columnCount();//总列数
|
|
for(int i=0; i<columnCount; i++)
|
|
{
|
|
if( ui->tableWidget->cellWidget(1, i) != nullptr )
|
|
{
|
|
auto myWidget = ui->tableWidget->cellWidget(1, i);
|
|
//
|
|
FormTrack *formTrack = (FormTrack*)myWidget;//获得widget
|
|
if(formTrack)
|
|
{
|
|
//options
|
|
QJsonObject formTrackObj;
|
|
formTrackObj["id"] = i;
|
|
formTrackObj["info"] = formTrack->makeJson();
|
|
subcaseArray.append(formTrackObj);
|
|
}
|
|
}
|
|
}
|
|
rootObj["formTracks"]=subcaseArray;
|
|
|
|
return rootObj;
|
|
}
|