diff --git a/logPlus/formhead.cpp b/logPlus/formhead.cpp index 401561f..05ac76d 100644 --- a/logPlus/formhead.cpp +++ b/logPlus/formhead.cpp @@ -276,136 +276,195 @@ void FormHead::updateJsonInfo(QJsonObject headObjInfo) //展示所有单元格 void FormHead::DisplayItems(QJsonArray itemsArray) { + QMap mapItems; + + int id = 0; int iCount = itemsArray.size(); for(int i=0; i-1 && row>-1) + for(int id=0; idtableWidget->item(row, col); - //内容 - if (itemObj.contains("text")) + int iNum = mapItems.value(id); + QJsonValue itemValue = itemsArray[iNum]; + + QJsonObject itemObj = itemValue.toObject(); + int col=-1; + int row=-1; + // + if (itemObj.contains("col")) { - QJsonValue value = itemObj.value("text"); - if (value.isString()) { - QString newText = value.toString(); - qDebug() << "text:" << newText; - item->setText(newText); + QJsonValue value = itemObj.value("col"); + if (value.isDouble()) { + col = value.toInt(); + qDebug() << "col:" << QString::number(col); } } - //字体 - if (itemObj.contains("Font")) + // + if (itemObj.contains("row")) { - QJsonValue value = itemObj.value("Font"); - QFont newFont; - newFont.fromString(value.toString()); - item->setFont(newFont); - } - //字体颜色 - if (itemObj.contains("FontColor")) - { - QJsonValue value = itemObj.value("FontColor"); - QColor newColor; - newColor.setNamedColor(value.toString()); - // 设置字体颜色 - QBrush brush(newColor); - item->setForeground(brush); - } - //背景颜色 - if (itemObj.contains("backColor")) - { - QJsonValue value = itemObj.value("backColor"); - QColor newColor; - newColor.setNamedColor(value.toString()); - // 设置颜色 - QBrush brush(newColor); - item->setBackground(brush); - } - //列宽(cm) - double colWidth = 0; - double rowHeight = 0; - if (itemObj.contains("colWidth")) - { - QJsonValue value = itemObj.value("colWidth"); + QJsonValue value = itemObj.value("row"); if (value.isDouble()) { - colWidth = value.toDouble(); - qDebug() << "colWidth:" << QString::number(colWidth); - ui->tableWidget->setColumnWidth(col, colWidth*g_dPixelPerCm); - } - } - //行高 - if (itemObj.contains("rowHeight")) - { - QJsonValue value = itemObj.value("rowHeight"); - if (value.isDouble()) { - rowHeight = value.toDouble(); - qDebug() << "rowHeight:" << QString::number(rowHeight); - ui->tableWidget->setRowHeight(row, rowHeight*g_dPixelPerCm); + row = value.toInt(); + qDebug() << "row:" << QString::number(row); } } - //图例 - QString imagePath = ""; - double colWidth_Img = 0; - double rowHeight_Img = 0; - if (itemObj.contains("imagePath")) + if(col>-1 && row>-1) { - QJsonValue value = itemObj.value("imagePath"); - if (value.isString()) { - imagePath = value.toString(); - qDebug() << "imagePath:" << imagePath; - item->setData(Qt::UserRole+1, imagePath); // 图片路径 + QTableWidgetItem* item = ui->tableWidget->item(row, col); + //内容 + if (itemObj.contains("text")) + { + QJsonValue value = itemObj.value("text"); + if (value.isString()) { + QString newText = value.toString(); + qDebug() << "text:" << newText; + item->setText(newText); + } } - } - //图例宽(cm) - if (itemObj.contains("colWidth_Img")) - { - QJsonValue value = itemObj.value("colWidth_Img"); - if (value.isDouble()) { - colWidth_Img = value.toDouble(); - qDebug() << "colWidth_Img:" << QString::number(colWidth_Img); - item->setData(Qt::UserRole+2, colWidth_Img); + //字体 + if (itemObj.contains("Font")) + { + QJsonValue value = itemObj.value("Font"); + QFont newFont; + newFont.fromString(value.toString()); + item->setFont(newFont); } - } - //图例高(cm) - if (itemObj.contains("rowHeight_Img")) - { - QJsonValue value = itemObj.value("rowHeight_Img"); - if (value.isDouble()) { - rowHeight_Img = value.toDouble(); - qDebug() << "rowHeight_Img:" << QString::number(rowHeight_Img); - item->setData(Qt::UserRole+3, rowHeight_Img); + //字体颜色 + if (itemObj.contains("FontColor")) + { + QJsonValue value = itemObj.value("FontColor"); + QColor newColor; + newColor.setNamedColor(value.toString()); + // 设置字体颜色 + QBrush brush(newColor); + item->setForeground(brush); } - } - if(imagePath != "") - { + //背景颜色 + if (itemObj.contains("backColor")) + { + QJsonValue value = itemObj.value("backColor"); + QColor newColor; + newColor.setNamedColor(value.toString()); + // 设置颜色 + QBrush brush(newColor); + item->setBackground(brush); + } + //列宽(cm) + double colWidth = 0; + double rowHeight = 0; + if (itemObj.contains("colWidth")) + { + QJsonValue value = itemObj.value("colWidth"); + if (value.isDouble()) { + colWidth = value.toDouble(); + qDebug() << "colWidth:" << QString::number(colWidth); + ui->tableWidget->setColumnWidth(col, colWidth*g_dPixelPerCm); + } + } + //行高 + if (itemObj.contains("rowHeight")) + { + QJsonValue value = itemObj.value("rowHeight"); + if (value.isDouble()) { + rowHeight = value.toDouble(); + qDebug() << "rowHeight:" << QString::number(rowHeight); + ui->tableWidget->setRowHeight(row, rowHeight*g_dPixelPerCm); + } + } + //图例 - ChangHeadItemProperty(row, col, imagePath, colWidth_Img*g_dPixelPerCm, rowHeight_Img*g_dPixelPerCm); - } + QString imagePath = ""; + double colWidth_Img = 0; + double rowHeight_Img = 0; + if (itemObj.contains("imagePath")) + { + QJsonValue value = itemObj.value("imagePath"); + if (value.isString()) { + imagePath = value.toString(); + qDebug() << "imagePath:" << imagePath; + item->setData(Qt::UserRole+1, imagePath); // 图片路径 + } + } + //图例宽(cm) + if (itemObj.contains("colWidth_Img")) + { + QJsonValue value = itemObj.value("colWidth_Img"); + if (value.isDouble()) { + colWidth_Img = value.toDouble(); + qDebug() << "colWidth_Img:" << QString::number(colWidth_Img); + item->setData(Qt::UserRole+2, colWidth_Img); + } + } + //图例高(cm) + if (itemObj.contains("rowHeight_Img")) + { + QJsonValue value = itemObj.value("rowHeight_Img"); + if (value.isDouble()) { + rowHeight_Img = value.toDouble(); + qDebug() << "rowHeight_Img:" << QString::number(rowHeight_Img); + item->setData(Qt::UserRole+3, rowHeight_Img); + } + } + if(imagePath != "") + { + //图例 + ChangHeadItemProperty(row, col, imagePath, colWidth_Img*g_dPixelPerCm, rowHeight_Img*g_dPixelPerCm); + } + //合并单元格 + int rowSpan = 1; + int colSpan = 1; + if (itemObj.contains("rowSpan")) + { + QJsonValue value = itemObj.value("rowSpan"); + if (value.isDouble()) { + rowSpan = value.toInt(); + qDebug() << "rowSpan:" << QString::number(rowSpan); + } + } + if (itemObj.contains("columnSpan")) + { + QJsonValue value = itemObj.value("columnSpan"); + if (value.isDouble()) { + colSpan = value.toInt(); + qDebug() << "colSpan:" << QString::number(colSpan); + } + } + if(rowSpan > 1 || colSpan > 1) + { + int rowSpanCurrent = 0; + int columnSpanCurrent = 0; + rowSpanCurrent = ui->tableWidget->rowSpan(row, col); + columnSpanCurrent = ui->tableWidget->columnSpan(row, col); + if(rowSpanCurrent > 1 || columnSpanCurrent > 1) + { + //已经合并过,不再合并 + } + else { + //合并单元格 + ui->tableWidget->setSpan(row, col, rowSpan, colSpan); + } + } + } } } } @@ -474,6 +533,7 @@ QJsonObject FormHead::makeJson() rootObj["iRows"] = rowCount; rootObj["iCols"] = columnCount; // + int id=0; QJsonArray subcaseArray; for(int col=0; coltableWidget->item(row, col); QJsonObject formHeadObj; + formHeadObj["id"] = id; formHeadObj["row"] = row; formHeadObj["col"] = col; + id++; if(item) { //图例 QString imagePath = ""; //图头, 图例宽高 - double m_colWidth_Img = 1; - double m_rowHeight_Img = 1; + double my_colWidth_Img = 1; + double my_rowHeight_Img = 1; //图头, 行高、列宽 - double m_colWidth = 1; - double m_rowHeight = 1; + double my_colWidth = 1; + double my_rowHeight = 1; QVariant bgData = item->data(Qt::UserRole+1); // 我们约定用这个角色存储图片路径 if (bgData.isValid()) { @@ -502,28 +564,36 @@ QJsonObject FormHead::makeJson() //图例宽 QVariant colWidth_Img = item->data(Qt::UserRole+2); if (colWidth_Img.isValid()) { - m_colWidth_Img = colWidth_Img.toDouble(); + my_colWidth_Img = colWidth_Img.toDouble(); } //图例高 QVariant rowHeight_Img = item->data(Qt::UserRole+3); if (rowHeight_Img.isValid()) { - m_rowHeight_Img = rowHeight_Img.toDouble(); + my_rowHeight_Img = rowHeight_Img.toDouble(); } //行高、列宽 - m_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm; - m_rowHeight = ui->tableWidget->rowHeight(row)/g_dPixelPerCm; + my_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm; + my_rowHeight = ui->tableWidget->rowHeight(row)/g_dPixelPerCm; + + int rowSpan = 0; + int columnSpan = 0; + rowSpan = ui->tableWidget->rowSpan(row, col); + columnSpan = ui->tableWidget->columnSpan(row, col); //---------------- formHeadObj["imagePath"] = imagePath; - formHeadObj["colWidth_Img"] = m_colWidth_Img; - formHeadObj["rowHeight_Img"] = m_rowHeight_Img; + formHeadObj["colWidth_Img"] = my_colWidth_Img; + formHeadObj["rowHeight_Img"] = my_rowHeight_Img; formHeadObj["backColor"] = item->background().color().name();//背景颜色 formHeadObj["text"] = item->text(); formHeadObj["Font"] = item->font().toString(); formHeadObj["FontColor"] = item->foreground().color().name(); - formHeadObj["colWidth"] = m_colWidth; - formHeadObj["rowHeight"] = m_rowHeight; + formHeadObj["colWidth"] = my_colWidth; + formHeadObj["rowHeight"] = my_rowHeight; + formHeadObj["rowSpan"] = rowSpan; + formHeadObj["columnSpan"] = columnSpan; + } subcaseArray.append(formHeadObj); }