#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; itableWidget->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; itableWidget->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; itableWidget->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; itableWidget->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; }