优化合并单元格的json属性加载方法
This commit is contained in:
parent
4fb6c50b53
commit
2e55985bc8
|
|
@ -276,136 +276,195 @@ void FormHead::updateJsonInfo(QJsonObject headObjInfo)
|
||||||
//展示所有单元格
|
//展示所有单元格
|
||||||
void FormHead::DisplayItems(QJsonArray itemsArray)
|
void FormHead::DisplayItems(QJsonArray itemsArray)
|
||||||
{
|
{
|
||||||
|
QMap<int, int> mapItems;
|
||||||
|
|
||||||
|
int id = 0;
|
||||||
int iCount = itemsArray.size();
|
int iCount = itemsArray.size();
|
||||||
for(int i=0; i<iCount; i++)
|
for(int i=0; i<iCount; i++)
|
||||||
{
|
{
|
||||||
QJsonValue itemValue = itemsArray[i];
|
QJsonValue itemValue = itemsArray[i];
|
||||||
|
|
||||||
QJsonObject itemObj = itemValue.toObject();
|
QJsonObject itemObj = itemValue.toObject();
|
||||||
int col=-1;
|
|
||||||
int row=-1;
|
|
||||||
//
|
//
|
||||||
if (itemObj.contains("col"))
|
if (itemObj.contains("id"))
|
||||||
{
|
{
|
||||||
QJsonValue value = itemObj.value("col");
|
QJsonValue value = itemObj.value("id");
|
||||||
if (value.isDouble()) {
|
if (value.isDouble()) {
|
||||||
col = value.toInt();
|
id = value.toInt();
|
||||||
qDebug() << "col:" << QString::number(col);
|
qDebug() << "id:" << QString::number(id);
|
||||||
}
|
//
|
||||||
}
|
mapItems.insert(id, i);
|
||||||
//
|
|
||||||
if (itemObj.contains("row"))
|
|
||||||
{
|
|
||||||
QJsonValue value = itemObj.value("row");
|
|
||||||
if (value.isDouble()) {
|
|
||||||
row = value.toInt();
|
|
||||||
qDebug() << "row:" << QString::number(row);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(col>-1 && row>-1)
|
for(int id=0; id<iCount; id++)
|
||||||
|
{
|
||||||
|
if(mapItems.contains(id))
|
||||||
{
|
{
|
||||||
QTableWidgetItem* item = ui->tableWidget->item(row, col);
|
int iNum = mapItems.value(id);
|
||||||
//内容
|
QJsonValue itemValue = itemsArray[iNum];
|
||||||
if (itemObj.contains("text"))
|
|
||||||
|
QJsonObject itemObj = itemValue.toObject();
|
||||||
|
int col=-1;
|
||||||
|
int row=-1;
|
||||||
|
//
|
||||||
|
if (itemObj.contains("col"))
|
||||||
{
|
{
|
||||||
QJsonValue value = itemObj.value("text");
|
QJsonValue value = itemObj.value("col");
|
||||||
if (value.isString()) {
|
if (value.isDouble()) {
|
||||||
QString newText = value.toString();
|
col = value.toInt();
|
||||||
qDebug() << "text:" << newText;
|
qDebug() << "col:" << QString::number(col);
|
||||||
item->setText(newText);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//字体
|
//
|
||||||
if (itemObj.contains("Font"))
|
if (itemObj.contains("row"))
|
||||||
{
|
{
|
||||||
QJsonValue value = itemObj.value("Font");
|
QJsonValue value = itemObj.value("row");
|
||||||
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");
|
|
||||||
if (value.isDouble()) {
|
if (value.isDouble()) {
|
||||||
colWidth = value.toDouble();
|
row = value.toInt();
|
||||||
qDebug() << "colWidth:" << QString::number(colWidth);
|
qDebug() << "row:" << QString::number(row);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//图例
|
if(col>-1 && row>-1)
|
||||||
QString imagePath = "";
|
|
||||||
double colWidth_Img = 0;
|
|
||||||
double rowHeight_Img = 0;
|
|
||||||
if (itemObj.contains("imagePath"))
|
|
||||||
{
|
{
|
||||||
QJsonValue value = itemObj.value("imagePath");
|
QTableWidgetItem* item = ui->tableWidget->item(row, col);
|
||||||
if (value.isString()) {
|
//内容
|
||||||
imagePath = value.toString();
|
if (itemObj.contains("text"))
|
||||||
qDebug() << "imagePath:" << imagePath;
|
{
|
||||||
item->setData(Qt::UserRole+1, imagePath); // 图片路径
|
QJsonValue value = itemObj.value("text");
|
||||||
|
if (value.isString()) {
|
||||||
|
QString newText = value.toString();
|
||||||
|
qDebug() << "text:" << newText;
|
||||||
|
item->setText(newText);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
//字体
|
||||||
//图例宽(cm)
|
if (itemObj.contains("Font"))
|
||||||
if (itemObj.contains("colWidth_Img"))
|
{
|
||||||
{
|
QJsonValue value = itemObj.value("Font");
|
||||||
QJsonValue value = itemObj.value("colWidth_Img");
|
QFont newFont;
|
||||||
if (value.isDouble()) {
|
newFont.fromString(value.toString());
|
||||||
colWidth_Img = value.toDouble();
|
item->setFont(newFont);
|
||||||
qDebug() << "colWidth_Img:" << QString::number(colWidth_Img);
|
|
||||||
item->setData(Qt::UserRole+2, colWidth_Img);
|
|
||||||
}
|
}
|
||||||
}
|
//字体颜色
|
||||||
//图例高(cm)
|
if (itemObj.contains("FontColor"))
|
||||||
if (itemObj.contains("rowHeight_Img"))
|
{
|
||||||
{
|
QJsonValue value = itemObj.value("FontColor");
|
||||||
QJsonValue value = itemObj.value("rowHeight_Img");
|
QColor newColor;
|
||||||
if (value.isDouble()) {
|
newColor.setNamedColor(value.toString());
|
||||||
rowHeight_Img = value.toDouble();
|
// 设置字体颜色
|
||||||
qDebug() << "rowHeight_Img:" << QString::number(rowHeight_Img);
|
QBrush brush(newColor);
|
||||||
item->setData(Qt::UserRole+3, rowHeight_Img);
|
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["iRows"] = rowCount;
|
||||||
rootObj["iCols"] = columnCount;
|
rootObj["iCols"] = columnCount;
|
||||||
//
|
//
|
||||||
|
int id=0;
|
||||||
QJsonArray subcaseArray;
|
QJsonArray subcaseArray;
|
||||||
for(int col=0; col<columnCount; col++)
|
for(int col=0; col<columnCount; col++)
|
||||||
{
|
{
|
||||||
|
|
@ -482,18 +542,20 @@ QJsonObject FormHead::makeJson()
|
||||||
QTableWidgetItem* item = ui->tableWidget->item(row, col);
|
QTableWidgetItem* item = ui->tableWidget->item(row, col);
|
||||||
|
|
||||||
QJsonObject formHeadObj;
|
QJsonObject formHeadObj;
|
||||||
|
formHeadObj["id"] = id;
|
||||||
formHeadObj["row"] = row;
|
formHeadObj["row"] = row;
|
||||||
formHeadObj["col"] = col;
|
formHeadObj["col"] = col;
|
||||||
|
id++;
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
//图例
|
//图例
|
||||||
QString imagePath = "";
|
QString imagePath = "";
|
||||||
//图头, 图例宽高
|
//图头, 图例宽高
|
||||||
double m_colWidth_Img = 1;
|
double my_colWidth_Img = 1;
|
||||||
double m_rowHeight_Img = 1;
|
double my_rowHeight_Img = 1;
|
||||||
//图头, 行高、列宽
|
//图头, 行高、列宽
|
||||||
double m_colWidth = 1;
|
double my_colWidth = 1;
|
||||||
double m_rowHeight = 1;
|
double my_rowHeight = 1;
|
||||||
|
|
||||||
QVariant bgData = item->data(Qt::UserRole+1); // 我们约定用这个角色存储图片路径
|
QVariant bgData = item->data(Qt::UserRole+1); // 我们约定用这个角色存储图片路径
|
||||||
if (bgData.isValid()) {
|
if (bgData.isValid()) {
|
||||||
|
|
@ -502,28 +564,36 @@ QJsonObject FormHead::makeJson()
|
||||||
//图例宽
|
//图例宽
|
||||||
QVariant colWidth_Img = item->data(Qt::UserRole+2);
|
QVariant colWidth_Img = item->data(Qt::UserRole+2);
|
||||||
if (colWidth_Img.isValid()) {
|
if (colWidth_Img.isValid()) {
|
||||||
m_colWidth_Img = colWidth_Img.toDouble();
|
my_colWidth_Img = colWidth_Img.toDouble();
|
||||||
}
|
}
|
||||||
//图例高
|
//图例高
|
||||||
QVariant rowHeight_Img = item->data(Qt::UserRole+3);
|
QVariant rowHeight_Img = item->data(Qt::UserRole+3);
|
||||||
if (rowHeight_Img.isValid()) {
|
if (rowHeight_Img.isValid()) {
|
||||||
m_rowHeight_Img = rowHeight_Img.toDouble();
|
my_rowHeight_Img = rowHeight_Img.toDouble();
|
||||||
}
|
}
|
||||||
|
|
||||||
//行高、列宽
|
//行高、列宽
|
||||||
m_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm;
|
my_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm;
|
||||||
m_rowHeight = ui->tableWidget->rowHeight(row)/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["imagePath"] = imagePath;
|
||||||
formHeadObj["colWidth_Img"] = m_colWidth_Img;
|
formHeadObj["colWidth_Img"] = my_colWidth_Img;
|
||||||
formHeadObj["rowHeight_Img"] = m_rowHeight_Img;
|
formHeadObj["rowHeight_Img"] = my_rowHeight_Img;
|
||||||
formHeadObj["backColor"] = item->background().color().name();//背景颜色
|
formHeadObj["backColor"] = item->background().color().name();//背景颜色
|
||||||
formHeadObj["text"] = item->text();
|
formHeadObj["text"] = item->text();
|
||||||
formHeadObj["Font"] = item->font().toString();
|
formHeadObj["Font"] = item->font().toString();
|
||||||
formHeadObj["FontColor"] = item->foreground().color().name();
|
formHeadObj["FontColor"] = item->foreground().color().name();
|
||||||
formHeadObj["colWidth"] = m_colWidth;
|
formHeadObj["colWidth"] = my_colWidth;
|
||||||
formHeadObj["rowHeight"] = m_rowHeight;
|
formHeadObj["rowHeight"] = my_rowHeight;
|
||||||
|
formHeadObj["rowSpan"] = rowSpan;
|
||||||
|
formHeadObj["columnSpan"] = columnSpan;
|
||||||
|
|
||||||
}
|
}
|
||||||
subcaseArray.append(formHeadObj);
|
subcaseArray.append(formHeadObj);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user