#include "formtrack.h" #include "ui_formtrack.h" #include #include "CallManage.h" //曲线名称栏(表格) 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, 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(); } } 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; 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; 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; itableWidget->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; }