logplus/logPlus/formtrack.cpp

259 lines
9.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "formtrack.h"
#include "ui_formtrack.h"
#include <QDebug>
#include "CallManage.h"
extern int g_iOneWidth; //道宽
//曲线名称栏(表格)
FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) :
QWidget(parent),
ui(new Ui::FormTrack)
{
ui->setupUi(this);
m_strWellName = strWellName;
m_strTrackName = strTrackName;
//单元格委托
//m_delegate = new NoLRBorderDelegate();
//隐藏网格线
ui->tableWidget->setShowGrid(false);
//设置样式表竖直边框宽度为0隐藏
ui->tableWidget->setStyleSheet( "QTableView::item {border-left: 0px solid black;} \
QTableView::item:selected {border-left: 0px solid black;}\
QTableView::item {border-right: 0px solid black;} \
QTableView::item:selected {border-right: 0px solid black;}");
//表格绑定井名,道名
ui->tableWidget->m_strWellName = strWellName;
ui->tableWidget->m_strTrackName = strTrackName;
//
ui->tableWidget->verticalHeader()->hide();//隐藏左侧系统序号栏
ui->tableWidget->horizontalHeader()->hide();//隐藏上方系统序号栏
//因为tableWidget需要提前规定好行数与列数
int recordcount = 0; //总行数
ui->tableWidget->setColumnCount(1);//总列数
ui->tableWidget->setRowCount(recordcount); //动态设置行数
//设置所有列均匀分布并填充满整个空间
QHeaderView *header = ui->tableWidget->horizontalHeader();
for (int i = 0; i < ui->tableWidget->columnCount(); ++i) {
header->setSectionResizeMode(i, QHeaderView::Stretch);
}
//曲线
connect(this, SIGNAL(sig_AddLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
//波列
connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
//曲线选中,置顶
connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString)));
}
void FormTrack::s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName)
{
if(m_strUuid == strUuid &&
m_strWellName == strWellName &&
m_strTrackName == strTrackName)
{
//
}
else {
//取消表格选中状态
ui->tableWidget->clearSelection();
}
}
FormTrack::~FormTrack()
{
delete ui;
}
void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType)
{
qDebug()<< "Add";
if(strType=="curveObject")
{
emit sig_AddLine(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
else if(strType=="waveObject")
{
emit sig_AddWave(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
else if(strType=="tableObject")
{
//新建表格曲线
emit sig_AddTableLine(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
}
void FormTrack::s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addLine";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "curveObject";
formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax);
formInfo->setVMin(vmin);
formInfo->setFrontColor(QColor(0,0,0));
formInfo->setBackColor(QColor(255,255,255));
//设置高度
ui->tableWidget->setRowHeight(row, 100);
//单元格委托
//ui->tableWidget->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
//------------------------------------
// QFont font("微软雅黑", 10, QFont::Bold, false);
// //
// QTableWidgetItem* item = new QTableWidgetItem(strLineName);
// item->setFlags(item->flags() & (~Qt::ItemIsEditable));
// item->setForeground(QBrush(lineColor));// 设置字体颜色
// item->setFont(font); // 应用新的字体
// item->setTextAlignment(Qt::AlignCenter);//居中
// //
// ui->tableWidget->setItem(row, 0, item);
}
void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addWave";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "waveObject";
formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax);
formInfo->setVMin(vmin);
formInfo->setFrontColor(QColor(0,0,0));
formInfo->setBackColor(QColor(255,255,255));
//设置高度
ui->tableWidget->setRowHeight(row, 100);
//单元格委托
//ui->tableWidget->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
//------------------------------------
// QFont font("微软雅黑", 10, QFont::Bold, false);
// //
// QTableWidgetItem* item = new QTableWidgetItem(strLineName);
// item->setFlags(item->flags() & (~Qt::ItemIsEditable));
// item->setForeground(QBrush(lineColor));// 设置字体颜色
// item->setFont(font); // 应用新的字体
// item->setTextAlignment(Qt::AlignCenter);//居中
// //
// ui->tableWidget->setItem(row, 0, item);
}
void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addWave";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "tableObject";
formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax);
formInfo->setVMin(vmin);
formInfo->setFrontColor(QColor(0,0,0));
formInfo->setBackColor(QColor(255,255,255));
//设置高度
ui->tableWidget->setRowHeight(row, 100);
//单元格委托
//ui->tableWidget->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
//------------------------------------
// QFont font("微软雅黑", 10, QFont::Bold, false);
// //
// QTableWidgetItem* item = new QTableWidgetItem(strLineName);
// item->setFlags(item->flags() & (~Qt::ItemIsEditable));
// item->setForeground(QBrush(lineColor));// 设置字体颜色
// item->setFont(font); // 应用新的字体
// item->setTextAlignment(Qt::AlignCenter);//居中
// //
// ui->tableWidget->setItem(row, 0, item);
}
QJsonObject FormTrack::makeJson()
{
// 创建根对象
QJsonObject rootObj;
//
rootObj["WellName"] = m_strWellName;
rootObj["TrackName"] = m_strTrackName;
// 创建JSON数组并填充数据
QJsonArray subcaseArray;
//
int rowCount = ui->tableWidget->rowCount();
for(int i=0; i<rowCount; i++)
{
if( ui->tableWidget->cellWidget(i, 0) != nullptr )
{
auto myWidget = ui->tableWidget->cellWidget(i, 0);
//
FormInfo *formInfo = (FormInfo*)myWidget;//获得widget
if(formInfo)
{
//options
QJsonObject formInfoObj;
formInfoObj["id"] = i;
formInfoObj["info"] = formInfo->makeJson();
subcaseArray.append(formInfoObj);
}
}
}
rootObj["formInfos"]=subcaseArray;
return rootObj;
}