#include "DataPretreatmentWidget.h"
#include <QSplitter>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QDebug>
#include <QFontDatabase>
#include <QOpenGLWidget>
#include "common.h"
#include "appevent.h"
DataPretreatmentWidget::DataPretreatmentWidget(int groupNo, QWidget *parent, DataPretreatmentType pretreatmentType) : QWidget(parent), m_dataPretreatmentType(pretreatmentType), m_groupNo(groupNo)
{
initUI();
switch (m_dataPretreatmentType)
{
case DataPretreatmentType::GammaPlot:
m_title = tr("伽马数据预处理");
break;
case DataPretreatmentType::PresurePlot:
m_title = tr("压力数据预处理");
break;
case DataPretreatmentType::ShakePlot:
m_title = tr("震动数据预处理");
break;
case DataPretreatmentType::DirecteAnglePlot:
m_title = tr("方位角数据预处理");
break;
case DataPretreatmentType::SlantAnglePlot:
m_title = tr("倾角数据预处理");
break;
}
m_plotWidget->on_updateTitle(m_title);
}
/**
* @brief LithologyHierachyWidget::initUI
* 初始化界面布局
*/
void DataPretreatmentWidget::initUI()
{
m_plotWidget = new DataPretreatmentPlot(this);
m_settingWidget = new DataPretreatmentSetting(this);
connect(m_settingWidget, SIGNAL(updateImagePara(ImageLayout, DataPretreatmentFont)), m_plotWidget, SLOT(on_updateImagePara(ImageLayout, DataPretreatmentFont)));
connect(m_settingWidget, SIGNAL(updatePlotColor(DataPretreatmentPlotColor)), m_plotWidget, SLOT(on_updatePlotColor(DataPretreatmentPlotColor)));
connect(m_settingWidget, SIGNAL(updateShowPlot(bool, bool)), m_plotWidget, SLOT(on_updateShowPlot(bool, bool)));
connect(m_settingWidget, SIGNAL(updateFilter()), this, SLOT(on_updateFilter()));
connect(m_settingWidget, SIGNAL(updateReset()), this, SLOT(on_updateReset()));
m_settingWidget->on_updateImagePara(); // 根据默认参数刷新图表
m_settingWidget->on_updatePlotColor(); // 根据默认参数刷新图表颜色
QSplitter *splitter = new QSplitter();
splitter->setStyleSheet("QSplitter {background-color: #E6EDF7;border: 0px solid #d0d0d0;}"
"QSplitter::handle {width: 8px;background-color: #ffff00;border: 1px solid #c0c0c0;}");
splitter->addWidget(m_plotWidget);
splitter->addWidget(m_settingWidget);
QHBoxLayout *allLayout = new QHBoxLayout;
allLayout->setSpacing(0);
allLayout->setContentsMargins(0, 0, 0, 0);
allLayout->addWidget(splitter);
this->setLayout(allLayout);
}
/**获取导出图片的名称**/
QString DataPretreatmentWidget::getExportImageName()
{
return m_title;
}
/**离开界面**/
void DataPretreatmentWidget::leave()
{
m_plotWidget->leave();
}
/**进入界面**/
void DataPretreatmentWidget::enter()
{
m_plotWidget->enter();
}
/**序列化参数**/
void DataPretreatmentWidget::toJson(QJsonObject &obj)
{
obj.insert("Image", ImageLayout::toJson(m_settingWidget->getImageLayout()));
obj.insert("Font", DataPretreatmentFont::toJson(m_settingWidget->getLithologyHierachyFont()));
obj.insert("Color", DataPretreatmentPlotColor::toJson(m_settingWidget->getLithologyHierachyPlotColor()));
}
/**反序列化参数**/
void DataPretreatmentWidget::fromJson(const QJsonObject &obj)
{
m_settingWidget->setImageLayout(ImageLayout::fromJson(obj.value("Image").toObject()));
m_settingWidget->setLithologyHierachyFont(DataPretreatmentFont::fromJson(obj.value("Font").toObject()));
m_settingWidget->setLithologyHierachyPlotColor(DataPretreatmentPlotColor::fromJson(obj.value("Color").toObject()));
}
bool DataPretreatmentWidget::exportImage(QString dir)
{
bool isSuccess = false;
m_plotWidget->on_exportImage(dir, isSuccess);
return isSuccess;
}
void DataPretreatmentWidget::refresh()
{
if (m_plotWidget)
{
m_plotWidget->on_refresh();
}
}
void DataPretreatmentWidget::setOriginalData(const QVector<std::shared_ptr<MetaItem>> &arrayData)
{
if (arrayData.size() <= 0)
{
return;
}
QList<DepthValue> depthValueBuff;
float maxDepth = -9999999.0f;
float maxValue = -9999999.0f;
float minDepth = 0.0f;
float minValue = 9999999.0f;
switch (m_dataPretreatmentType)
{
case DataPretreatmentType::GammaPlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_gamma)));
break;
case DataPretreatmentType::PresurePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_pressure)));
break;
case DataPretreatmentType::ShakePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_ypathB)));
break;
case DataPretreatmentType::DirecteAnglePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_directeAngle)));
break;
case DataPretreatmentType::SlantAnglePlot:
depthValueBuff.append(DepthValue(0.0f, arrayData.at(0)->_slantAngle));
break;
}
for (int i = 0; i < arrayData.size(); i++)
{
float value = 0;
switch (m_dataPretreatmentType)
{
case DataPretreatmentType::GammaPlot:
value = arrayData.at(i)->_gamma;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 300.0f;
minValue = -10.0f;
break;
case DataPretreatmentType::PresurePlot:
value = arrayData.at(i)->_pressure;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 16.0f;
minValue = -16.0f;
break;
case DataPretreatmentType::ShakePlot:
value = arrayData.at(i)->_ypathB;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = maxValue > value ? maxValue : value;
minValue = minValue < value ? minValue : value;
break;
case DataPretreatmentType::DirecteAnglePlot:
value = arrayData.at(i)->_directeAngle;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 360.0f;
minValue = -90.0f;
break;
case DataPretreatmentType::SlantAnglePlot:
value = arrayData.at(i)->_slantAngle;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, value));
maxValue = 90.0f;
minValue = -90.0f;
break;
}
maxDepth = maxDepth > arrayData.at(i)->_depth ? maxDepth : arrayData.at(i)->_depth;
minDepth = minDepth<arrayData.at(i)->_depth?minDepth:arrayData.at(i)->_depth;
}
if(m_dataPretreatmentType == DataPretreatmentType::ShakePlot)
{
maxValue += 10.0f;
minValue -= 10.0f;
}
m_plotWidget->on_updateOriginalPlotData(depthValueBuff, minDepth, maxDepth, minValue, maxValue);
}
void DataPretreatmentWidget::updateData(const QVector<std::shared_ptr<MetaItem>> &arrayData)
{
if(arrayData.size() <= 0)
{
return;
}
QList<DepthValue> depthValueBuff;
float maxDepth = -9999999.0f;
float maxValue = -9999999.0f;
float minDepth = 0.0f;
float minValue = 9999999.0f;
switch (m_dataPretreatmentType)
{
case DataPretreatmentType::GammaPlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_gamma)));
break;
case DataPretreatmentType::PresurePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_pressure)));
break;
case DataPretreatmentType::ShakePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_ypathB)));
break;
case DataPretreatmentType::DirecteAnglePlot:
depthValueBuff.append(DepthValue(0.0f, qAbs(arrayData.at(0)->_directeAngle)));
break;
case DataPretreatmentType::SlantAnglePlot:
depthValueBuff.append(DepthValue(0.0f, arrayData.at(0)->_slantAngle));
break;
}
for (int i = 0; i < arrayData.size(); i++)
{
float value = 0;
switch (m_dataPretreatmentType)
{
case DataPretreatmentType::GammaPlot:
value = arrayData.at(i)->_gamma;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 300.0f;
minValue = -10.0f;
break;
case DataPretreatmentType::PresurePlot:
value = arrayData.at(i)->_pressure;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 16.0f;
minValue = -16.0f;
break;
case DataPretreatmentType::ShakePlot:
value = arrayData.at(i)->_ypathB;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = maxValue > value ? maxValue : value;
minValue = minValue < value ? minValue : value;
break;
case DataPretreatmentType::DirecteAnglePlot:
value = arrayData.at(i)->_directeAngle;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, qAbs(value)));
maxValue = 360.0f;
minValue = -90.0f;
break;
case DataPretreatmentType::SlantAnglePlot:
value = arrayData.at(i)->_slantAngle;
depthValueBuff.append(DepthValue(arrayData.at(i)->_depth, value));
maxValue = 90.0f;
minValue = -90.0f;
break;
}
maxDepth = maxDepth > arrayData.at(i)->_depth ? maxDepth : arrayData.at(i)->_depth;
minDepth = minDepth < arrayData.at(i)->_depth ? minDepth : arrayData.at(i)->_depth;
}
if(m_dataPretreatmentType == DataPretreatmentType::ShakePlot)
{
maxValue += 10.0f;
minValue -= 10.0f;
}
m_plotWidget->on_updatePlotData(depthValueBuff, minDepth, maxDepth, minValue, maxValue);
}
void DataPretreatmentWidget::on_updateReset()
{
DataMagrSingleton::GetInstance()->resetFilteredData(m_groupNo, this);
}
void DataPretreatmentWidget::on_updateFilter()
{
// 禁止方位角倾角过滤
if (m_dataPretreatmentType == DirecteAnglePlot || m_dataPretreatmentType == SlantAnglePlot || m_dataPretreatmentType == GammaPlot)
{
return;
}
int M = m_settingWidget->getCurSgNumber();
DataMagrSingleton::GetInstance()->sg_filter(m_groupNo, this, M);
}
/************************************************绘图区域表头*************/
DataPretreatmentTitlePlot::DataPretreatmentTitlePlot(QGraphicsItem *parent) : QGraphicsItem(parent)
{
}
void DataPretreatmentTitlePlot::setCurveSize(const float &maxWidthPix)
{
m_widthPix = maxWidthPix;
}
void DataPretreatmentTitlePlot::setFont(QFont titleFont, QFont tableTitleFont)
{
m_titleFont = titleFont; // 标题字体
m_tableTitleFont = tableTitleFont; // 表头字体
m_highPix = getTitleHeight();
update();
}
float DataPretreatmentTitlePlot::getTitleHeight()
{
return (m_titleFont.pixelSize() + m_tableTitleFont.pixelSize() * 2) * FONTSIZESCALE;
}
QRectF DataPretreatmentTitlePlot::boundingRect() const
{
return QRectF(0, 0, m_widthPix, m_highPix);
}
void DataPretreatmentTitlePlot::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
painter->setPen(QPen(Qt::black, 3));
painter->drawRect(QRectF(0, 0, m_widthPix, m_highPix));
float startHightPosition = 0;
/**绘制标题**/
painter->setFont(m_titleFont);
painter->drawRect(QRectF(0, startHightPosition, m_widthPix, m_titleFont.pixelSize() * FONTSIZESCALE));
painter->drawText(QRectF(0, startHightPosition, m_widthPix, m_titleFont.pixelSize() * FONTSIZESCALE), Qt::AlignCenter, m_title);
startHightPosition += m_titleFont.pixelSize() * FONTSIZESCALE;
float widthPositon = 0;
/**绘制原始数据名称标题**/
painter->setFont(m_tableTitleFont);
painter->setPen(QPen(Qt::black, 1));
painter->drawRect(QRectF(widthPositon, startHightPosition, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE));
painter->drawText(QRectF(widthPositon, startHightPosition, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignCenter, tr("原始数据曲线"));
painter->drawRect(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignLeft, QString::number(m_startOriginal, 'f', 1));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignHCenter, tr("-"));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignRight, QString::number(m_endOriginal, 'f', 1));
widthPositon = m_widthPix / 2.0;
/**绘制预处理数据名称标题**/
painter->setPen(QPen(Qt::black, 1));
painter->drawRect(QRectF(widthPositon, startHightPosition, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE));
painter->drawText(QRectF(widthPositon, startHightPosition, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignCenter, tr("预处理数据曲线"));
painter->drawRect(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignLeft, QString::number(m_startPreData, 'f', 1));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignHCenter, tr("-"));
painter->drawText(QRectF(widthPositon, startHightPosition + m_tableTitleFont.pixelSize() * FONTSIZESCALE, m_widthPix / 2.0, m_tableTitleFont.pixelSize() * FONTSIZESCALE), Qt::AlignVCenter | Qt::AlignRight, QString::number(m_endPreData, 'f', 1));
}
/************************************************绘图区域*************/
#include <QHBoxLayout>
#include <QGraphicsRectItem>
#include "Custom/module/OpenGraphicsScene.h"
#include "Custom/module/OpenGraphicsView.h"
DataPretreatmentPlot::DataPretreatmentPlot(QWidget *parent) : QWidget(parent)
{
initUI();
}
/**
* @brief LithologyHierachyWidget::initUI
* 初始化界面布局
*/
void DataPretreatmentPlot::initUI()
{
scene = new OpenGraphicsScene();
OpenGraphicsView *view = new OpenGraphicsView(this);
view->setMouseTrack(true);
connect(view, SIGNAL(mousePosChanged(QPointF)), scene, SLOT(onMouseChanged(QPointF))); // 鼠标移动绘制十字
connect(view, SIGNAL(mouseChoosePos(QPointF)), scene, SLOT(onMouseChoosePos(QPointF))); // 双击绘制岩层分割线
view->setScene(scene);
view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); /// 抗锯齿
/**添加表头**/
m_lithologyHierachyTitlePlot = new DataPretreatmentTitlePlot();
scene->addItem(m_lithologyHierachyTitlePlot);
/**比例尺图**/
m_measureScaleItem = new MeasureScaleItem();
scene->addItem(m_measureScaleItem);
/**原始数据**/
m_originalDataCurveItem = new DepthCurveItem();
connect(view, SIGNAL(mousePosChanged(QPointF)), m_originalDataCurveItem, SLOT(onMouseChanged(QPointF)));
connect(scene, SIGNAL(updateSaveImgEvent(bool)), m_originalDataCurveItem, SLOT(onSaveImgEvent(bool)));
;
m_originalDataCurveItem->setPaintRulerLine(true, 10);
scene->addItem(m_originalDataCurveItem);
/**预处理图**/
m_pretreatmentDataCurveItem = new DepthCurveItem();
connect(view, SIGNAL(mousePosChanged(QPointF)), m_pretreatmentDataCurveItem, SLOT(onMouseChanged(QPointF)));
connect(scene, SIGNAL(updateSaveImgEvent(bool)), m_pretreatmentDataCurveItem, SLOT(onSaveImgEvent(bool)));
m_pretreatmentDataCurveItem->setPaintRulerLine(true, 10);
scene->addItem(m_pretreatmentDataCurveItem);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setSpacing(0);
layout->setContentsMargins(1, 1, 1, 1);
layout->addWidget(view, 1);
this->setLayout(layout);
}
void DataPretreatmentPlot::on_exportImage(QString path, bool &isSuccess, int borderSise)
{
scene->exportImage(path, isSuccess, borderSise);
}
/**
* @brief on_updateImagePara
* @param imageLayout
* @param lithologyHierachyFont
* 更新图像参数
*/
void DataPretreatmentPlot::on_updateImagePara(ImageLayout imageLayout, DataPretreatmentFont lithologyHierachyFont)
{
m_imageLayout = imageLayout;
m_lithologyHierachyFont = lithologyHierachyFont;
on_refresh();
}
void DataPretreatmentPlot::on_updatePlotColor(DataPretreatmentPlotColor color)
{
m_lithologyHierachyPlotColor = color;
on_refresh();
}
void DataPretreatmentPlot::on_updateShowPlot(bool isShowOriPlot, bool isShowPrePlot)
{
m_isShowOriPlot = isShowOriPlot;
m_isShowPrePlot = isShowPrePlot;
on_refresh();
}
/**
* 刷新界面
*/
void DataPretreatmentPlot::on_refresh()
{
float titleHight = 0;
float plotHeight = m_imageLayout.heightPix - m_imageLayout.TBBorderPix * 2 - titleHight;
float plotWidth = m_imageLayout.widthPix - m_imageLayout.LRBorderPix * 2;
float startWidth = m_imageLayout.LRBorderPix;
/**
*横向分为16分,其中地质图,伽马,震动,压力各站3分,厚度,范围,解释工站4分
*16=4*3 +4
*/
/**绘制标题栏**/
{
m_lithologyHierachyTitlePlot->setFont(m_lithologyHierachyFont.titleFont, m_lithologyHierachyFont.tableTitleFont);
m_lithologyHierachyTitlePlot->setCurveSize(plotWidth);
m_lithologyHierachyTitlePlot->setPos(startWidth, 0);
titleHight = m_lithologyHierachyTitlePlot->getTitleHeight();
}
/**刷新原始数据图**/
if (m_isShowOriPlot)
{
float width = plotWidth / 2.0;
m_originalDataCurveItem->updateCurveSize(width, plotHeight);
m_originalDataCurveItem->updateStepDepth(m_imageLayout.nRulerInterval);
m_originalDataCurveItem->setPlotColor(m_lithologyHierachyPlotColor.oriPlotColor);
m_originalDataCurveItem->setPos(startWidth, titleHight);
m_originalDataCurveItem->setFont(m_lithologyHierachyFont.tableContextFont);
startWidth = startWidth + width;
}
/**刷新比例尺图**/
{
float width = 10;
m_measureScaleItem->updateCurveSize(width, plotHeight);
m_measureScaleItem->updateStepDepth(m_imageLayout.nRulerInterval);
m_measureScaleItem->setFont(m_lithologyHierachyFont.scaleplateFont);
m_measureScaleItem->setPos(startWidth - width, titleHight);
startWidth = startWidth;
}
/**刷新预处理数据图**/
if (m_isShowPrePlot)
{
float width = plotWidth / 2;
m_pretreatmentDataCurveItem->updateCurveSize(width, plotHeight);
m_pretreatmentDataCurveItem->updateStepDepth(m_imageLayout.nRulerInterval);
m_pretreatmentDataCurveItem->setPlotColor(m_lithologyHierachyPlotColor.prePlotColor);
m_pretreatmentDataCurveItem->setPos(startWidth, titleHight);
m_pretreatmentDataCurveItem->setFont(m_lithologyHierachyFont.tableContextFont);
startWidth = startWidth + width;
}
scene->updateBoundingRect();
scene->onSetBackgroundColor(m_imageLayout.backGroundColor);
scene->update();
}
void DataPretreatmentPlot::on_updateReset()
{
this->on_refresh();
}
void DataPretreatmentPlot::on_updateFilter()
{
this->on_refresh();
}
void DataPretreatmentPlot::on_updateTitle(QString title)
{
m_lithologyHierachyTitlePlot->setTitle(title);
}
void DataPretreatmentPlot::on_updateOriginalPlotData(const QList<DepthValue> &depthValueBuff, const float &minDepth, const float &maxDepth, const float &minValue, const float &maxValue)
{
m_depthValueBuff = depthValueBuff;
m_maxDepth = maxDepth;
m_minDepth = minDepth;
m_lithologyHierachyTitlePlot->setOriginalDataRange(minValue, maxValue);
m_originalDataCurveItem->setDepthCurveData(depthValueBuff, minDepth, maxDepth, minValue, maxValue);
m_measureScaleItem->setDepthMeasure(minDepth, maxDepth);
this->on_refresh();
}
void DataPretreatmentPlot::on_updatePlotData(const QList<DepthValue> &depthValueBuff, const float &minDepth, const float &maxDepth, const float &minValue, const float &maxValue)
{
m_lithologyHierachyTitlePlot->setPreDataRangeRange(minValue, maxValue);
m_pretreatmentDataCurveItem->setDepthCurveData(depthValueBuff, minDepth, maxDepth, minValue, maxValue);
m_measureScaleItem->setDepthMeasure(minDepth, maxDepth);
this->on_refresh();
}
/**离开界面**/
void DataPretreatmentPlot::leave()
{
m_originalDataCurveItem->leave();
m_pretreatmentDataCurveItem->leave();
}
/**进入界面**/
void DataPretreatmentPlot::enter()
{
m_originalDataCurveItem->enter();
m_pretreatmentDataCurveItem->enter();
}
/**绘制边框**/
void DataPretreatmentPlot::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter p(this);
QPen pen;
pen.setColor(Qt::black); // 划线颜色
p.setPen(pen); // 设置画笔记颜色
p.drawRect(0, 0, width() - 1, height() - 1); // 绘制边框
}
/************************************************属性设置区域*************/
DataPretreatmentSetting::DataPretreatmentSetting(QWidget *parent) : QWidget(parent)
{
m_sgNumber = 5;
m_imageParaWidget = createImageParaWidgetUI();
initUI();
}
/**
* @brief createImageParaWidgetUI
* 初始化图像参数
*/
QWidget *DataPretreatmentSetting::createImageParaWidgetUI()
{
CusScrollArea *scrollArea = new CusScrollArea(this);
QWidget *widget = new QWidget(this);
{
m_backGroundColorDialog = new QColorDialog(widget);
m_backGroundColorDialog->setOption(QColorDialog::ShowAlphaChannel); /// 可以设置透明度
connect(m_backGroundColorDialog, SIGNAL(colorSelected(QColor)), this, SLOT(on_backGroundColorValue(QColor)));
QGroupBox *m_imageSizeBox = new QGroupBox(tr("图像"), widget);
m_imageSizeBox->setStyleSheet("QGroupBox{font-weight:bold;border: 3px solid rgba(255, 255, 255, 0);border-radius:10px;margin-top:5ex;}"
"QGroupBox::title { subcontrol-origin: margin;subcontrol-position: top left;left:0px; margin-left: 0px;padding:0 1px;}");
{
QGridLayout *layout = new QGridLayout(widget);
QLabel *hLabel = new QLabel(tr("宽度"));
hLabel->setAlignment(Qt::AlignCenter);
QLabel *vLabel = new QLabel(tr("高度"));
vLabel->setAlignment(Qt::AlignCenter);
m_imageWidthEdit = new FlatLineEdit();
m_imageWidthEdit->setPlaceholderText(tr("请输入图片宽度像素值。"));
m_imageWidthEdit->setText(QString::number(m_imageLayout.widthPix));
m_imageHightEdit = new FlatLineEdit();
m_imageHightEdit->setPlaceholderText(tr("请输入图片高度像素值。"));
m_imageHightEdit->setText(QString::number(m_imageLayout.heightPix));
connect(m_imageWidthEdit, SIGNAL(editingFinished()), this, SLOT(on_updateImagePara()));
connect(m_imageHightEdit, SIGNAL(editingFinished()), this, SLOT(on_updateImagePara()));
layout->addWidget(hLabel, 0, 0);
layout->addWidget(m_imageWidthEdit, 0, 1);
layout->addWidget(new QLabel(tr("PX")), 0, 2);
layout->addWidget(vLabel, 1, 0);
layout->addWidget(m_imageHightEdit, 1, 1);
layout->addWidget(new QLabel(tr("PX")), 1, 2);
m_imageSizeBox->setLayout(layout);
}
QGroupBox *m_brorderSizeBox = new QGroupBox(tr("边距"), widget);
m_brorderSizeBox->setStyleSheet("QGroupBox{font-weight:bold;border: 3px solid rgba(255, 255, 255, 0);border-radius:10px;margin-top:5ex;}"
"QGroupBox::title { subcontrol-origin: margin;subcontrol-position: top left;left:0px; margin-left: 0px;padding:0 1px;}");
{
QGridLayout *layout = new QGridLayout(widget);
QLabel *lrLabel = new QLabel(tr("左右"));
lrLabel->setAlignment(Qt::AlignCenter);
QLabel *tbLabel = new QLabel(tr("上下"));
tbLabel->setAlignment(Qt::AlignCenter);
m_borderLREdit = new MarginLineEdit();
m_borderLREdit->setPlaceholderText(tr("请输入左右边距像素值。"));
m_borderTBEdit = new MarginLineEdit();
m_borderTBEdit->setPlaceholderText(tr("请输入上下边距像素值。"));
m_borderLREdit->setText(QString::number(m_imageLayout.LRBorderPix));
m_borderTBEdit->setText(QString::number(m_imageLayout.TBBorderPix));
connect(m_borderLREdit, SIGNAL(editingFinished()), this, SLOT(on_updateImagePara()));
connect(m_borderTBEdit, SIGNAL(editingFinished()), this, SLOT(on_updateImagePara()));
layout->addWidget(lrLabel, 0, 0);
layout->addWidget(m_borderLREdit, 0, 1);
layout->addWidget(new QLabel(tr("PX")), 0, 2);
layout->addWidget(tbLabel, 1, 0);
layout->addWidget(m_borderTBEdit, 1, 1);
layout->addWidget(new QLabel(tr("PX")), 1, 2);
m_brorderSizeBox->setLayout(layout);
}
QGroupBox *m_fontBox = new QGroupBox(tr("字体"), widget);
m_fontBox->setStyleSheet("QGroupBox{font-weight:bold;border: 3px solid rgba(255, 255, 255, 0);border-radius:10px;margin-top:5ex;}"
"QGroupBox::title { subcontrol-origin: margin;subcontrol-position: top left;left:0px; margin-left: 0px;padding:0 1px;}");
{
QGridLayout *layout = new QGridLayout(widget);
QLabel *positionLabel = new QLabel(tr("位置"));
positionLabel->setAlignment(Qt::AlignCenter);
QLabel *fontStyleLabel = new QLabel(tr("格式"));
fontStyleLabel->setAlignment(Qt::AlignCenter);
QLabel *fontSizeLabel = new QLabel(tr("大小"));
fontSizeLabel->setAlignment(Qt::AlignCenter);
m_fontPositionCombox = new FlatComboBox(m_fontBox);
m_fontPositionCombox->addItem(tr("标题"), DataPretreatmentFont::title);
m_fontPositionCombox->addItem(tr("表头"), DataPretreatmentFont::tableTitle);
// m_fontPositionCombox->addItem(tr("内容"),DataPretreatmentFont::tableContext);
m_fontPositionCombox->addItem(tr("标尺"), DataPretreatmentFont::scaleplate);
m_fontPositionCombox->setCurrentIndex(0);
connect(m_fontPositionCombox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_fontPositionChange()));
m_fontFormatCombox = new FlatComboBox(m_fontBox);
QFontDatabase database;
foreach (const QString &family, database.families(QFontDatabase::SimplifiedChinese))
{
m_fontFormatCombox->addItem(family);
}
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.titleFont.family());
connect(m_fontFormatCombox, SIGNAL(activated(QString)), this, SLOT(on_updateImagePara()));
m_fontSizeCombox = new FlatComboBox(m_fontBox);
for (int i = 6; i < 33; i++)
{
m_fontSizeCombox->addItem(QString::number(i) + tr("PX"), i);
}
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.titleFont.pixelSize()));
connect(m_fontSizeCombox, SIGNAL(activated(QString)), this, SLOT(on_updateImagePara()));
m_fontBoldBtn = new QToolButton(m_fontBox);
m_fontBoldBtn->setToolTip(tr("加粗"));
m_fontBoldBtn->setCheckable(true);
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.titleFont.bold());
m_fontBoldBtn->setFixedWidth(19);
m_fontBoldBtn->setStyleSheet("QToolButton{background:url(E:/outs/cds/resource/MainWindowExample/resource/img/nobold.png);background-repeat: no-repeat;background-color:transparent;}"
"QToolButton:checked{background:url(:/image/resource/img/bold.png);background-repeat: no-repeat;background-color:transparent;}");
connect(m_fontBoldBtn, SIGNAL(clicked(bool)), this, SLOT(on_updateImagePara()));
layout->addWidget(positionLabel, 0, 0);
layout->addWidget(m_fontPositionCombox, 0, 1);
layout->addWidget(new QLabel(tr(" ")), 0, 2);
layout->addWidget(fontStyleLabel, 1, 0);
layout->addWidget(m_fontFormatCombox, 1, 1);
layout->addWidget(new QLabel(tr(" ")), 1, 2);
layout->addWidget(fontSizeLabel, 2, 0);
layout->addWidget(m_fontSizeCombox, 2, 1);
layout->addWidget(m_fontBoldBtn, 2, 2);
layout->setColumnStretch(1, 1);
m_fontBox->setLayout(layout);
}
QGroupBox *m_otherBox = new QGroupBox(tr("其他"), widget);
m_otherBox->setStyleSheet("QGroupBox{font-weight:bold;border: 3px solid rgba(255, 255, 255, 0);border-radius:10px;margin-top:5ex;}"
"QGroupBox::title { subcontrol-origin: margin;subcontrol-position: top left;left:0px; margin-left: 0px;padding:0 1px;}");
{
QGridLayout *layout = new QGridLayout(m_otherBox);
QLabel *backgroundLabel = new QLabel(tr("背景"));
backgroundLabel->setAlignment(Qt::AlignCenter);
QLabel *scaleplatebLabel = new QLabel(tr("间隔"));
scaleplatebLabel->setAlignment(Qt::AlignCenter);
QLabel *imageFormatLabel = new QLabel(tr("格式"));
imageFormatLabel->setAlignment(Qt::AlignCenter);
QLabel *sgNumberLabel = new QLabel(tr("抽样密度"));
sgNumberLabel->setAlignment(Qt::AlignCenter);
m_backGroundColorBtn = new FlatPushButton(m_otherBox);
int r, g, b, a;
m_imageLayout.backGroundColor.getRgb(&r, &g, &b, &a);
m_backGroundColorBtn->setStyleSheet(QString("background-color: rgba(%1, %2, %3, %4);"
"border-color: rgba(%1, %2, %3, %4);"
"border-radius:10px;")
.arg(r)
.arg(g)
.arg(b)
.arg(a));
connect(m_backGroundColorBtn, SIGNAL(clicked(bool)), SLOT(on_showBackGroundColorDislaog()));
m_backGroundColorBtn->setFixedHeight(m_backGroundColorBtn->height() * 1.1);
m_scaleplateCombox = new FlatComboBox();
m_scaleplateCombox->addItem(tr("1米"), 1);
m_scaleplateCombox->addItem(tr("3米"), 3);
m_scaleplateCombox->addItem(tr("5米"), 5);
m_scaleplateCombox->addItem(tr("10米"), 10);
m_scaleplateCombox->addItem(tr("15米"), 15);
m_scaleplateCombox->addItem(tr("20米"), 20);
m_scaleplateCombox->addItem(tr("30米"), 30);
m_scaleplateCombox->addItem(tr("40米"), 40);
m_scaleplateCombox->setCurrentIndex(m_scaleplateCombox->findData(m_imageLayout.nRulerInterval));
connect(m_scaleplateCombox, SIGNAL(currentTextChanged(QString)), this, SLOT(on_updateImagePara()));
m_imageFormatCombox = new FlatComboBox("PNG", this);
m_imageFormatCombox->setCurrentText(m_imageLayout.imageFormat);
connect(m_imageFormatCombox, SIGNAL(currentTextChanged(QString)), this, SLOT(on_updateImagePara()));
m_sgNumberCombox = new FlatComboBox();
m_sgNumberCombox->addItem(tr("5"), 5);
m_sgNumberCombox->addItem(tr("7"), 7);
m_sgNumberCombox->addItem(tr("9"), 9);
m_sgNumberCombox->addItem(tr("11"), 11);
m_sgNumberCombox->addItem(tr("13"), 13);
m_sgNumberCombox->addItem(tr("15"), 15);
m_sgNumberCombox->addItem(tr("31"), 31);
m_sgNumberCombox->addItem(tr("61"), 61);
m_sgNumberCombox->setCurrentIndex(0);
connect(m_sgNumberCombox, SIGNAL(currentTextChanged(QString)), this, SLOT(on_upDataSgNumber()));
QLabel *label = new QLabel(tr(" "));
label->setFixedWidth(19);
layout->addWidget(backgroundLabel, 0, 0);
layout->addWidget(m_backGroundColorBtn, 0, 1);
layout->addWidget(label, 0, 2);
layout->addWidget(scaleplatebLabel, 1, 0);
layout->addWidget(m_scaleplateCombox, 1, 1);
layout->addWidget(new QLabel(tr("")), 1, 2);
layout->addWidget(imageFormatLabel, 2, 0);
layout->addWidget(m_imageFormatCombox, 2, 1);
layout->addWidget(sgNumberLabel, 3, 0);
layout->addWidget(m_sgNumberCombox, 3, 1);
layout->setColumnStretch(1, 1);
m_otherBox->setLayout(layout);
}
QGroupBox *m_operateBox = new QGroupBox(tr("操作"), this);
m_operateBox->setStyleSheet("QGroupBox{font-weight:bold;border: 3px solid rgba(255, 255, 255, 0);border-radius:10px;margin-top:5ex;}"
"QGroupBox::title {font-weight:bold;subcontrol-origin: margin;subcontrol-position: top left;left:0px; margin-left: 0px;padding:0 1px;}");
{
FlatToolButton *m_resetBtn = new FlatToolButton();
m_resetBtn->setText(tr("重置"));
connect(m_resetBtn, &QPushButton::clicked, [&]()
{ emit updateReset(); });
FlatToolButton *m_filterBtn = new FlatToolButton(this);
m_filterBtn->setText(tr("过滤"));
connect(m_filterBtn, &QPushButton::clicked, [&]() { emit updateFilter(); });
QGridLayout *layout = new QGridLayout();
layout->addWidget(m_resetBtn, 0, 0);
layout->addWidget(m_filterBtn, 0, 1);
m_operateBox->setLayout(layout);
}
QVBoxLayout *layout = new QVBoxLayout(widget);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(m_imageSizeBox);
layout->addWidget(m_brorderSizeBox);
layout->addWidget(m_fontBox);
layout->addWidget(m_otherBox);
layout->addWidget(m_operateBox);
layout->addStretch();
widget->setLayout(layout);
}
scrollArea->setScrollWidget(widget); // 给ScrollArea添加内部部件
scrollArea->setWidgetResizable(true);
on_fontPositionChange();
return scrollArea;
}
void DataPretreatmentSetting::refreshImageLayout()
{
m_imageWidthEdit->setText(QString::number(m_imageLayout.widthPix));
m_imageHightEdit->setText(QString::number(m_imageLayout.heightPix));
m_borderLREdit->setText(QString::number(m_imageLayout.LRBorderPix));
m_borderTBEdit->setText(QString::number(m_imageLayout.TBBorderPix));
int r, g, b, a;
m_imageLayout.backGroundColor.getRgb(&r, &g, &b, &a);
m_backGroundColorBtn->setStyleSheet(QString("background-color: rgba(%1, %2, %3, %4);"
"border-color: rgba(%1, %2, %3, %4);"
"border-radius:10px;")
.arg(r)
.arg(g)
.arg(b)
.arg(a));
m_scaleplateCombox->setCurrentIndex(m_scaleplateCombox->findData(m_imageLayout.nRulerInterval));
m_imageFormatCombox->setCurrentText(m_imageLayout.imageFormat);
emit updateImagePara(m_imageLayout, m_lithologyHierachyFont);
}
void DataPretreatmentSetting::refreshLithologyHierachyFont()
{
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.titleFont.family());
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.titleFont.pixelSize()));
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.titleFont.bold());
on_fontPositionChange();
emit updateImagePara(m_imageLayout, m_lithologyHierachyFont);
}
void DataPretreatmentSetting::refreshLithologyHierachyPlotColor()
{
{
int r, g, b, a;
m_lithologyHierachyPlotColor.oriPlotColor.getRgb(&r, &g, &b, &a);
}
{
int r, g, b, a;
m_lithologyHierachyPlotColor.prePlotColor.getRgb(&r, &g, &b, &a);
}
updatePlotColor(m_lithologyHierachyPlotColor);
}
/**
* @brief initUI
* 初始化界面
*/
void DataPretreatmentSetting::initUI()
{
this->setAttribute(Qt::WA_StyledBackground, true);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setSpacing(0);
layout->setContentsMargins(0, 5, 0, 5);
QTabWidget *tabwidget = new QTabWidget(this);
tabwidget->setAttribute(Qt::WA_StyledBackground); // 为了使tab-bar设置成功
tabwidget->setStyleSheet("QWidget{background-color:#ffffff}QTabWidget::pane{\
border:none;\
color:#000000;\
background-color:rgba(230,237,247,255);\
}\
QTabWidget::tab-bar{\
alignment:left;\
border:none;\
background-color:rgba(230,237,247,255);\
}\
QTabBar::tab:disabled {\
width: 0; color: transparent;\
}\
QToolButton:disabled {\
width: 0; color: transparent;border:none;\
}\
QCheckBox:disabled {\
width: 0; color: transparent;border:none;\
}\
QCheckBox::indicator:disabled {\
width: 0;height: 0;\
}\
QTabBar::tab{\
color:#000000;\
border:5px solid rgba(230,237,247, 0);\
background:rgba(230,237,247,255);\
}\
QTabBar::tab:hover{\
border:5px solid rgba(255, 255, 255, 0);\
color:#000000;\
background:rgba(250, 250, 250, 100);\
}\
QTabBar::tab:selected{\
border:5px solid rgba(255, 255, 255, 0);\
color:#000000;\
font-weight: bold;\
background:rgba(255, 255, 255, 255);\
}");
tabwidget->setTabPosition(QTabWidget::North); // 设置标题栏位置
tabwidget->setTabsClosable(false); // 设置页签不可关闭
tabwidget->setMovable(true); // 设置页签可以拖动
tabwidget->insertTab(0, m_imageParaWidget, QIcon(":/image/resource/img/imagePara.png"), tr("属性"));
tabwidget->setTabToolTip(0, tr("属性"));
tabwidget->setCurrentIndex(0);
layout->addWidget(tabwidget);
}
void DataPretreatmentSetting::on_showColorDislaog()
{
m_colorDialog->exec();
}
void DataPretreatmentSetting::on_showBackGroundColorDislaog()
{
m_backGroundColorDialog->exec();
}
void DataPretreatmentSetting::on_colorValue(QColor color)
{
Q_UNUSED(color);
on_updatePlotColor();
}
void DataPretreatmentSetting::on_backGroundColorValue(QColor color)
{
int r, g, b, a;
color.getRgb(&r, &g, &b, &a);
m_imageLayout.backGroundColor = color;
m_backGroundColorBtn->setStyleSheet(QString("background-color: rgba(%1, %2, %3, %4);"
"border-color: rgba(%1, %2, %3, %4);"
"border-radius:10px;")
.arg(r)
.arg(g)
.arg(b)
.arg(a));
on_updateImagePara();
}
void DataPretreatmentSetting::on_fontPositionChange()
{
DataPretreatmentFont::FontPosition fontPostion = (DataPretreatmentFont::FontPosition)m_fontPositionCombox->currentData().toInt();
switch (fontPostion)
{
case DataPretreatmentFont::title:
{
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.titleFont.family());
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.titleFont.pixelSize()));
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.titleFont.bold());
}
break;
case DataPretreatmentFont::tableTitle:
{
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.tableTitleFont.family());
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.tableTitleFont.pixelSize()));
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.tableTitleFont.bold());
}
break;
case DataPretreatmentFont::tableContext:
{
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.tableContextFont.family());
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.tableContextFont.pixelSize()));
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.tableContextFont.bold());
}
break;
case DataPretreatmentFont::scaleplate:
{
m_fontFormatCombox->setCurrentText(m_lithologyHierachyFont.scaleplateFont.family());
m_fontSizeCombox->setCurrentIndex(m_fontSizeCombox->findData(m_lithologyHierachyFont.scaleplateFont.pixelSize()));
m_fontBoldBtn->setChecked(m_lithologyHierachyFont.scaleplateFont.bold());
}
break;
default:
break;
}
}
void DataPretreatmentSetting::on_upDataSgNumber()
{
m_sgNumber = m_sgNumberCombox->currentData().toInt();
}
void DataPretreatmentSetting::on_updateImagePara()
{
m_imageLayout.widthPix = m_imageWidthEdit->text().trimmed().toInt();
m_imageLayout.heightPix = m_imageHightEdit->text().trimmed().toInt();
m_imageLayout.LRBorderPix = m_borderLREdit->text().trimmed().toInt();
m_imageLayout.TBBorderPix = m_borderTBEdit->text().trimmed().toInt();
m_imageLayout.nRulerInterval = m_scaleplateCombox->currentData().toInt();
DataPretreatmentFont::FontPosition fontPostion = (DataPretreatmentFont::FontPosition)m_fontPositionCombox->currentData().toInt();
switch (fontPostion)
{
case DataPretreatmentFont::title:
{
m_lithologyHierachyFont.titleFont.setFamily(m_fontFormatCombox->currentText());
m_lithologyHierachyFont.titleFont.setPixelSize(m_fontSizeCombox->currentData().toInt());
m_lithologyHierachyFont.titleFont.setBold(m_fontBoldBtn->isChecked());
}
break;
case DataPretreatmentFont::tableTitle:
{
m_lithologyHierachyFont.tableTitleFont.setFamily(m_fontFormatCombox->currentText());
m_lithologyHierachyFont.tableTitleFont.setPixelSize(m_fontSizeCombox->currentData().toInt());
m_lithologyHierachyFont.tableTitleFont.setBold(m_fontBoldBtn->isChecked());
}
break;
case DataPretreatmentFont::tableContext:
{
m_lithologyHierachyFont.tableContextFont.setFamily(m_fontFormatCombox->currentText());
m_lithologyHierachyFont.tableContextFont.setPixelSize(m_fontSizeCombox->currentData().toInt());
m_lithologyHierachyFont.tableContextFont.setBold(m_fontBoldBtn->isChecked());
}
break;
case DataPretreatmentFont::scaleplate:
{
m_lithologyHierachyFont.scaleplateFont.setFamily(m_fontFormatCombox->currentText());
m_lithologyHierachyFont.scaleplateFont.setPixelSize(m_fontSizeCombox->currentData().toInt());
m_lithologyHierachyFont.scaleplateFont.setBold(m_fontBoldBtn->isChecked());
}
break;
default:
break;
}
emit updateImagePara(m_imageLayout, m_lithologyHierachyFont);
}
void DataPretreatmentSetting::on_updatePlotColor()
{
emit updatePlotColor(m_lithologyHierachyPlotColor);
}
/**绘制边框**/
void DataPretreatmentSetting::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter p(this);
QPen pen;
pen.setColor(Qt::black); // 划线颜色
p.setPen(pen); // 设置画笔记颜色
p.drawRect(0, 0, width() - 1, height() - 1); // 绘制边框
}
void DataPretreatmentSetting::setImageLayout(const ImageLayout &imageLayout)
{
m_imageLayout = imageLayout;
/**刷新界面**/
refreshImageLayout();
}
void DataPretreatmentSetting::setLithologyHierachyFont(const DataPretreatmentFont &lithologyHierachyFont)
{
m_lithologyHierachyFont = lithologyHierachyFont;
/**刷新界面**/
refreshLithologyHierachyFont();
}
void DataPretreatmentSetting::setLithologyHierachyPlotColor(const DataPretreatmentPlotColor &lithologyHierachyPlotColor)
{
m_lithologyHierachyPlotColor = lithologyHierachyPlotColor;
/**刷新界面**/
refreshLithologyHierachyPlotColor();
}
DataPretreatmentFont::DataPretreatmentFont()
{
titleFont = QFont(QObject::tr("微软雅黑")); // 标题字体
titleFont.setBold(true);
titleFont.setPixelSize(18);
tableTitleFont = QFont(QObject::tr("微软雅黑")); // 表头字体
tableTitleFont.setBold(true);
tableTitleFont.setPixelSize(15);
tableContextFont = QFont(QObject::tr("微软雅黑")); // 内容字体
tableContextFont.setBold(false);
tableContextFont.setPixelSize(14);
scaleplateFont = QFont(QObject::tr("微软雅黑")); // 标尺字体
scaleplateFont.setBold(false);
scaleplateFont.setPixelSize(13);
}
QJsonObject DataPretreatmentFont::toJson(const DataPretreatmentFont &item)
{
QJsonObject obj;
{
QJsonObject titleFontobj;
titleFontobj.insert("family", item.titleFont.family());
titleFontobj.insert("pixelSize", item.titleFont.pixelSize());
titleFontobj.insert("bold", item.titleFont.bold());
obj.insert("titleFont", titleFontobj);
}
{
QJsonObject tableTitleFontobj;
tableTitleFontobj.insert("family", item.tableTitleFont.family());
tableTitleFontobj.insert("pixelSize", item.tableTitleFont.pixelSize());
tableTitleFontobj.insert("bold", item.tableTitleFont.bold());
obj.insert("tableTitleFont", tableTitleFontobj);
}
{
QJsonObject tableContextFontobj;
tableContextFontobj.insert("family", item.tableContextFont.family());
tableContextFontobj.insert("pixelSize", item.tableContextFont.pixelSize());
tableContextFontobj.insert("bold", item.tableContextFont.bold());
obj.insert("tableContextFont", tableContextFontobj);
}
{
QJsonObject scaleplateFontobj;
scaleplateFontobj.insert("family", item.scaleplateFont.family());
scaleplateFontobj.insert("pixelSize", item.scaleplateFont.pixelSize());
scaleplateFontobj.insert("bold", item.scaleplateFont.bold());
obj.insert("scaleplateFont", scaleplateFontobj);
}
return obj;
}
DataPretreatmentFont DataPretreatmentFont::fromJson(const QJsonObject &obj)
{
DataPretreatmentFont font;
{
QJsonObject titleFontobj = obj.value("titleFont").toObject();
font.titleFont.setFamily(titleFontobj.value("family").toString());
font.titleFont.setPixelSize(titleFontobj.value("pixelSize").toDouble());
font.titleFont.setBold(titleFontobj.value("bold").toBool());
}
{
QJsonObject tableTitleFontobj = obj.value("tableTitleFont").toObject();
font.tableTitleFont.setFamily(tableTitleFontobj.value("family").toString());
font.tableTitleFont.setPixelSize(tableTitleFontobj.value("pixelSize").toDouble());
font.tableTitleFont.setBold(tableTitleFontobj.value("bold").toBool());
}
{
QJsonObject tableContextFontobj = obj.value("tableContextFont").toObject();
font.tableContextFont.setFamily(tableContextFontobj.value("family").toString());
font.tableContextFont.setPixelSize(tableContextFontobj.value("pixelSize").toDouble());
font.tableContextFont.setBold(tableContextFontobj.value("bold").toBool());
}
{
QJsonObject scaleplateFontobj = obj.value("scaleplateFont").toObject();
font.scaleplateFont.setFamily(scaleplateFontobj.value("family").toString());
font.scaleplateFont.setPixelSize(scaleplateFontobj.value("pixelSize").toDouble());
font.scaleplateFont.setBold(scaleplateFontobj.value("bold").toBool());
}
return font;
}
QJsonObject DataPretreatmentPlotColor::toJson(const DataPretreatmentPlotColor &item)
{
QJsonObject obj;
{
QJsonObject colorobj;
colorobj.insert("redF", item.oriPlotColor.redF());
colorobj.insert("greenF", item.oriPlotColor.greenF());
colorobj.insert("blueF", item.oriPlotColor.blueF());
obj.insert("oriPlotColor", colorobj);
}
{
QJsonObject colorobj;
colorobj.insert("redF", item.prePlotColor.redF());
colorobj.insert("greenF", item.prePlotColor.greenF());
colorobj.insert("blueF", item.prePlotColor.blueF());
obj.insert("prePlotColor", colorobj);
}
return obj;
}
DataPretreatmentPlotColor DataPretreatmentPlotColor::fromJson(const QJsonObject &obj)
{
DataPretreatmentPlotColor color;
{
QJsonObject colorobj = obj.value("oriPlotColor").toObject();
color.oriPlotColor.setRedF(colorobj.value("redF").toDouble());
color.oriPlotColor.setGreenF(colorobj.value("greenF").toDouble());
color.oriPlotColor.setBlueF(colorobj.value("blueF").toDouble());
}
{
QJsonObject colorobj = obj.value("prePlotColor").toObject();
color.prePlotColor.setRedF(colorobj.value("redF").toDouble());
color.prePlotColor.setGreenF(colorobj.value("greenF").toDouble());
color.prePlotColor.setBlueF(colorobj.value("blueF").toDouble());
}
return color;
}
最新发布