logplus/logPlus/formtrack.cpp

147 lines
5.0 KiB
C++
Raw Normal View History

2025-10-29 17:23:30 +08:00
#include "formtrack.h"
#include "ui_formtrack.h"
#include <QDebug>
#include "CallManage.h"
2025-10-29 17:23:30 +08:00
//曲线名称栏(表格)
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;}");
2025-10-29 17:23:30 +08:00
//表格绑定井名,道名
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, QColor, double, float, float)),
this, SLOT(s_addLine(QString, QString, QString, QString, QColor, double, float, float)));
//曲线选中,置顶
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();
}
2025-10-29 17:23:30 +08:00
}
FormTrack::~FormTrack()
{
delete ui;
}
void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor, double dWidth, float vmax, float vmin)
{
qDebug()<< "Add";
emit sig_AddLine(strSlfName, strWellName, m_strTrackName, strLineName, lineColor, dWidth, vmax, vmin);
}
void FormTrack::s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor, double dWidth, float vmax, float vmin)
{
qDebug() << "FormTrack s_addLine";
ui->tableWidget->m_strUuid = m_strUuid;
2025-10-29 17:23:30 +08:00
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
2025-10-29 17:23:30 +08:00
formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax);
formInfo->setVMin(vmin);
formInfo->setFrontColor(QColor(0,0,0));
formInfo->setBackColor(QColor(255,255,255));
2025-10-29 17:23:30 +08:00
//设置高度
ui->tableWidget->setRowHeight(row, 100);
//单元格委托
//ui->tableWidget->setItemDelegateForRow(row, m_delegate);
2025-10-29 17:23:30 +08:00
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
2025-10-29 17:23:30 +08:00
//------------------------------------
// 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;
}