logplus/logPlus/formwell.cpp

265 lines
8.4 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->verticalHeader()->setFixedWidth(3);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(3);
//关联信号槽
connect(CallManage::getInstance(), SIGNAL(sig_NewTrack(QString, QString, QString, QString, QString)), this, SLOT(s_NewTrack(QString, 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, QString strType)
{
//判断当前井是否与自己同名
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!="")
{
if(strType=="curveObject")
{
//新建曲线
emit CallManage::getInstance()->sig_AddLine(m_strUuid, strSlfName, strWellName, strTrackName, strLineName);
}
else if(strType=="waveObject")
{
//新建波列
emit CallManage::getInstance()->sig_AddWave(m_strUuid, strSlfName, strWellName, strTrackName, strLineName);
}
else if(strType=="tableObject")
{
//新建表格曲线
emit CallManage::getInstance()->sig_AddTableLine(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);
}
}
}
void FormWell::setRowHeight(double dHight, QProgressBar *progressBar, int iSplit)
{
//设置高度
ui->tableWidget->setRowHeight(2, (int)dHight);//7582
int iBeginValue = progressBar->value();
//
int columnCount = ui->tableWidget->columnCount();//总列数
int iSplitWell = iSplit / columnCount;
for(int i=0; i<columnCount; i++)
{
if( ui->tableWidget->cellWidget(1, i) != nullptr )
{
auto myWidget = ui->tableWidget->cellWidget(2, i);
//
FormDraw *formDraw = (FormDraw*)myWidget;//获得widget
if(formDraw)
{
//progressBar->setValue(iBeginValue+ i*iSplitWell); // 更新进度条的值
formDraw->setRowHeight(dHight, progressBar, iSplitWell);
}
}
}
}
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;
}