diff --git a/logPlus/formhead.cpp b/logPlus/formhead.cpp
index 82fecfe..cc549b1 100644
--- a/logPlus/formhead.cpp
+++ b/logPlus/formhead.cpp
@@ -24,10 +24,12 @@ extern QString g_prjname;
int g_iFixedWidth=0;//40;
int g_iFixedHeight=0;//30;
-int g_iColsWidth=100;
-int g_iRowsHight=40;
extern double g_dPixelPerCm;//每厘米像素数
+//下方赋值
+int g_iColsWidth=0; //100
+int g_iRowsHight=0; //40
+
extern QtProjectWidgets *g_projectWidgets; //左侧工程区
//画图头
@@ -37,11 +39,15 @@ FormHead::FormHead(QWidget *parent, QString indexID) :
{
ui->setupUi(this);
+ g_iColsWidth = g_dPixelPerCm * HEAD_COL_Width;
+ g_iRowsHight = g_dPixelPerCm * HEAD_ROW_Height;
+
//加载样式
loadStyle(":/qrc/qss/flatgray.css");
m_indexID =indexID;
m_parent = (FormMultiHeads *)parent;
+ m_strHeadOrTail = m_parent->m_strHeadOrTail;
// 强制使用Qt渲染引擎
//QApplication::setAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles, true);
@@ -755,8 +761,8 @@ QJsonObject FormHead::makeJson()
iFormulaType = formTableItemTmp->m_iFormulaType;
//行高、列宽
- my_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm;
- my_rowHeight = ui->tableWidget->rowHeight(row)/g_dPixelPerCm;
+ my_colWidth = formTableItemTmp->m_colWidth; //ui->tableWidget->columnWidth(col)/g_dPixelPerCm;
+ my_rowHeight = formTableItemTmp->m_rowHeight; //ui->tableWidget->rowHeight(row)/g_dPixelPerCm;
int rowSpan = 0;
int columnSpan = 0;
@@ -874,6 +880,18 @@ void FormHead::slotContextMenu(QPoint pos)
menu.addAction(QIcon(::GetImagePath() + "icon/Grid.png"), "复制", this, &FormHead::copy);
menu.addAction(QIcon(::GetImagePath() + "icon/Grid.png"), "粘贴", this, &FormHead::Paste);
menu.addSeparator();
+
+ QString strMenu= "";
+ if(m_strHeadOrTail == "Head")
+ {
+ strMenu= "保存为图头模板";
+ }
+ else {
+ strMenu= "保存为成果表模板";
+ }
+ menu.addAction(QIcon(::GetImagePath() + "icon/Save.png"), strMenu, this, &FormHead::slotSaveJsonModel);
+ menu.addSeparator();
+
menu.addAction(QIcon(::GetImagePath() + "icon/MergeCell.png"), "合并单元格", this, &FormHead::slotMerge);
menu.addAction(QIcon(::GetImagePath() + "icon/Grid.png"), "拆分单元格", this, &FormHead::slotSplit);
menu.addAction(QIcon(::GetImagePath() + "icon/Grid.png"), "边框", this, &FormHead::slotCellBorder);
@@ -890,6 +908,12 @@ void FormHead::slotContextMenu(QPoint pos)
menu.exec(ui->tableWidget->mapToGlobal(pos));
}
+//保存图头模板
+void FormHead::slotSaveJsonModel()
+{
+ m_parent->slotSaveJsonModel();
+}
+
//合并
void FormHead::slotMerge()
{
@@ -1424,8 +1448,18 @@ void FormHead::getTableSize_Biggest(int &iWidth, int &iHight)
iWidth += columnCount;
iHight += rowCount;
- iWidth = iWidth + ui->tableWidget->verticalScrollBar()->width();
- iHight = iHight + ui->tableWidget->horizontalScrollBar()->height();
+ //
+ int left, top, right, bottom;
+ this->getContentsMargins(&left, &top, &right, &bottom);
+ iWidth = iWidth + left + right;
+ iHight = iHight + top + bottom;//Margin上方
+
+ //
+// if(ui->tableWidget->horizontalScrollBar()->isVisible())
+ {
+ iWidth = iWidth + ui->tableWidget->verticalScrollBar()->width();
+ iHight = iHight + ui->tableWidget->horizontalScrollBar()->height();
+ }
}
//设置列宽
diff --git a/logPlus/formhead.h b/logPlus/formhead.h
index 5b25122..38930e0 100644
--- a/logPlus/formhead.h
+++ b/logPlus/formhead.h
@@ -39,6 +39,7 @@ public:
bool m_bRefresh=true;
FormMultiHeads *m_parent;
+ QString m_strHeadOrTail = ""; //Head代表图头, Tail代表成果表
public:
void loadStyle(const QString &qssFile);
@@ -75,6 +76,8 @@ public slots:
//图头右键菜单响应函数
void slotContextMenu(QPoint pos);
+
+ void slotSaveJsonModel();//保存图头模板
//
void slotMerge();//合并
void slotSplit();//拆分
diff --git a/logPlus/formhead.ui b/logPlus/formhead.ui
index 0dcc829..8b193c7 100644
--- a/logPlus/formhead.ui
+++ b/logPlus/formhead.ui
@@ -14,6 +14,18 @@
Form
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
diff --git a/logPlus/formmultiheads.cpp b/logPlus/formmultiheads.cpp
index aa9c4e1..6f07a1e 100644
--- a/logPlus/formmultiheads.cpp
+++ b/logPlus/formmultiheads.cpp
@@ -9,6 +9,8 @@
#include "formhead.h"
#include "qtcommonclass.h"
#include "CallManage.h"
+#include "geometryutils.h"
+extern QString g_prjname;
extern int g_iRows;
extern int g_iCols;
@@ -87,6 +89,63 @@ void FormMultiHeads::s_UnSelectTableItem(QString strUuid)
ui->tableWidget->clearSelection();
}
+QJsonObject FormMultiHeads::makeJsonModel()
+{
+ // 创建根对象
+ QJsonObject rootObj;
+ if(m_strHeadOrTail == "Head")
+ {
+ //图头
+ rootObj["heads"] = makeJsonArray();
+ }
+ else {
+ //成果表
+ rootObj["tails"] = makeJsonArray();
+ }
+ return rootObj;
+}
+
+//保存图头模板
+void FormMultiHeads::slotSaveJsonModel()
+{
+ QString folderPath;
+ folderPath = GetLogdataPath();
+ folderPath = folderPath + g_prjname;
+
+ QString strJsonFile;
+ if(m_strHeadOrTail == "Head")
+ {
+ //图头
+ strJsonFile = "图头文件(*.jsonHead)";
+ }
+ else {
+ //成果表
+ strJsonFile = "成果表文件(*.jsonFoot)";
+ }
+
+ //
+ QString exPortPath = QFileDialog::getSaveFileName(this, "另存为", folderPath, strJsonFile);
+ if (exPortPath.isEmpty() == false)
+ {
+ QJsonObject rootObj = makeJsonModel();
+ // 生成JSON文档
+ QJsonDocument doc(rootObj);
+ // 写入文件
+ QFile file(exPortPath);
+ if(file.open(QIODevice::WriteOnly)){
+ file.write(doc.toJson(QJsonDocument::Indented));
+ file.close();
+ qDebug() << "JSON文件写入成功!";
+ //
+ //m_fileJson = exPortPath;
+ } else {
+ qWarning() << "文件打开失败:" << file.errorString();
+ return;
+ }
+ }
+}
+
+
void FormMultiHeads::loadStyle(const QString &qssFile)
{
//加载样式表
@@ -116,35 +175,128 @@ void FormMultiHeads::slotContextMenu(QPoint pos)
{
//
QString strMenu= "";
+ QString strMenu2= "";
if(m_strHeadOrTail == "Head")
{
- strMenu= "新建图头";
+ strMenu = "新建图头";
+ strMenu2 = "加载图头模板";
}
else {
- strMenu= "新建成果表";
+ strMenu = "新建成果表";
+ strMenu2 = "加载成果表模板";
}
QMenu menu(ui->tableWidget);
- QAction *newAction = menu.addAction(strMenu);
- // 弹出菜单
- QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
- if (selectedAction == newAction) {
- NewHeadDialog *dlg = new NewHeadDialog(this);
+
+ menu.addAction(QIcon(::GetImagePath() + "icon/Edit.png"), strMenu, this, &FormMultiHeads::slotCreateHeadOrFoot);
+ menu.addAction(QIcon(::GetImagePath() + "icon/Sheet.png"), strMenu2, this, &FormMultiHeads::slotLoadHeadOrFoot);
+ menu.exec(ui->tableWidget->mapToGlobal(pos));
+
+}
+
+//创建图头或成果表
+void FormMultiHeads::slotCreateHeadOrFoot()
+{
+ NewHeadDialog *dlg = new NewHeadDialog(this);
+ //
+ dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象
+ int result = dlg->exec();//模态对话框
+ if (result == QDialog::Accepted) {
+ // 处理用户点击了确定按钮的逻辑
+ qDebug() << "Accepted=";
+ AddHead();
+ }
+ else if (result == QDialog::Rejected) {
+ // 处理用户点击了取消按钮的逻辑
+ qDebug() << "Rejected=";
+ }
+ else {
+ // 处理其他情况的逻辑
+ qDebug() << "other=";
+ }
+}
+
+//加载图头或成果表
+void FormMultiHeads::slotLoadHeadOrFoot()
+{
+ QString folderPath;
+ folderPath = GetLogdataPath();
+ folderPath = folderPath + g_prjname;
+
+ QString strJsonFile;
+ if(m_strHeadOrTail == "Head")
+ {
+ //图头
+ strJsonFile = "图头文件(*.jsonHead)";
+ }
+ else {
+ //成果表
+ strJsonFile = "成果表文件(*.jsonFoot)";
+ }
+
+ //打开
+ QString fileFull = "";
+ fileFull = QFileDialog::getOpenFileName(this,
+ tr("选择模板"),
+ folderPath,
+ strJsonFile);
+ if (fileFull.isEmpty())
+ {
+ return;
+ }
+
+ QJsonParseError jsonError;
+ // 文件
+ QFile file(fileFull);
+ if(file.open(QIODevice::ReadOnly))
+ {
+ // 解析JSON
+ QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &jsonError);
+ if (!document.isNull() && (jsonError.error == QJsonParseError::NoError))
+ {
+ if (document.isObject())
+ {
+ QJsonObject object = document.object();
+ //
+ if(m_strHeadOrTail == "Head")
+ {
+ if (object.contains("heads"))
+ {
+ //从json加载图头
+ QJsonValue value = object.value("heads");
+ if (value.isArray()) {
+ QJsonArray headsArray = value.toArray();
+
+ bool bMultiProject = false;
+ DisplayHeads(headsArray, m_strHeadOrTail, bMultiProject);
+ //qDebug() << "headsArray number:" << QString::number(m_headsArray.size());
+ }
+ }
+ }
+ else
+ {
+ if (object.contains("tails"))
+ {
+ //从json加载结果表
+ QJsonValue value = object.value("tails");
+ if (value.isArray()) {
+ QJsonArray tailsArray = value.toArray();
+ //
+ bool bMultiProject = false;
+ DisplayHeads(tailsArray, m_strHeadOrTail, bMultiProject);
+ //qDebug() << "tailsArray number:" << QString::number(m_tailsArray.size());
+ }
+ }
+ }
+ }
+ }
+
//
- dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象
- int result = dlg->exec();//模态对话框
- if (result == QDialog::Accepted) {
- // 处理用户点击了确定按钮的逻辑
- qDebug() << "Accepted=";
- AddHead();
- }
- else if (result == QDialog::Rejected) {
- // 处理用户点击了取消按钮的逻辑
- qDebug() << "Rejected=";
- }
- else {
- // 处理其他情况的逻辑
- qDebug() << "other=";
- }
+ file.close();
+ qDebug() << "JSON 模板文件读取成功!";
+ }
+ else {
+ qWarning() << "JSON 模板文件打开失败:" << file.errorString();
+ QMessageBox::information(NULL,"提示","模板加载失败!",QMessageBox::Ok);
}
}
@@ -405,6 +557,7 @@ void FormMultiHeads::getTableSize_Biggest(int &iWidth_Big, int &iHight_Big)
// int iWidth_Big = 0;
// int iHight_Big = 0;
+ int columnCount = ui->tableWidget->columnCount();//总列数
int rowCount = ui->tableWidget->rowCount();//总行数
for(int i=0; igetTableSize_Biggest(iWidth_Tmp, iHight_Tmp);
+
+ //宽度取最大
if(iWidth_Tmp>iWidth_Big)
{
iWidth_Big = iWidth_Tmp;
}
- if(iHight_Tmp>iHight_Big)
- {
- iHight_Big = iHight_Tmp;
- }
+ //高度相加
+ iHight_Big += iHight_Tmp;
+
}
}
}
}
+ iWidth_Big += columnCount;
+ iHight_Big += rowCount;
+
//
int left, top, right, bottom;
this->getContentsMargins(&left, &top, &right, &bottom);
@@ -440,6 +597,13 @@ void FormMultiHeads::getTableSize_Biggest(int &iWidth_Big, int &iHight_Big)
iWidth_Big = iWidth_Big + left + right;
iHight_Big = iHight_Big + top + bottom;//Margin上方
- iWidth_Big = iWidth_Big + ui->tableWidget->verticalScrollBar()->width();
- iHight_Big = iHight_Big + ui->tableWidget->horizontalScrollBar()->height();
+// if(ui->tableWidget->horizontalScrollBar()->isVisible())
+ {
+ iWidth_Big = iWidth_Big + ui->tableWidget->verticalScrollBar()->width();
+ iHight_Big = iHight_Big + ui->tableWidget->horizontalScrollBar()->height();
+ }
+
+ //
+ iWidth_Big += 30;
+ iHight_Big += 30;
}
diff --git a/logPlus/formmultiheads.h b/logPlus/formmultiheads.h
index 16fdb51..f2438b8 100644
--- a/logPlus/formmultiheads.h
+++ b/logPlus/formmultiheads.h
@@ -33,6 +33,15 @@ public slots:
//取消其他表格的选中状态
void s_UnSelectTableItem(QString strUuid);
+ //创建图头或成果表
+ void slotCreateHeadOrFoot();
+ //加载图头或成果表
+ void slotLoadHeadOrFoot();
+
+ //保存图头模板
+ void slotSaveJsonModel();
+ QJsonObject makeJsonModel();
+
public:
void loadStyle(const QString &qssFile);
void AddHead();
diff --git a/logPlus/formtableitem.h b/logPlus/formtableitem.h
index 68141f1..2040c1b 100644
--- a/logPlus/formtableitem.h
+++ b/logPlus/formtableitem.h
@@ -4,6 +4,9 @@
#include
//#include "PropertyWidget.h"
+#define HEAD_COL_Width 1
+#define HEAD_ROW_Height 0.5
+
#pragma execution_character_set("utf-8")
namespace Ui {
@@ -44,8 +47,8 @@ public:
int m_iFormulaType = 0;
//图头, 行高、列宽
- double m_colWidth = 1;
- double m_rowHeight = 1;
+ double m_colWidth = HEAD_COL_Width;
+ double m_rowHeight = HEAD_ROW_Height;
QString m_strSlfName = "";
QString m_strWellName = "";
diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp
index 8c671b4..def27a8 100644
--- a/logPlus/mainwindowcurve.cpp
+++ b/logPlus/mainwindowcurve.cpp
@@ -4528,6 +4528,8 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName,
//
geoRect_Head = m_dock1->geometry();
m_dock1->setGeometry(geoRect_Head.x(), geoRect_Head.y(), iMaxWidth, iHight_Head);
+ //重新获取
+ m_formMultiHeads->getTableSize(iWidth_Head, iHight_Head);
QPixmap pPixmap_Head = this->grab(QRect(geoRect_Head.x(), geoRect_Head.y(), iMaxWidth, iHight_Head));
//保存,方便查看
if(g_iDebug)
@@ -4541,6 +4543,8 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName,
m_dock2->show();
geoRect_Tail = m_dock2->geometry();
m_dock2->setGeometry(geoRect_Tail.x(), geoRect_Tail.y(), iMaxWidth, iHight_Tail);
+ //重新获取
+ m_formMultiTails->getTableSize(iWidth_Tail, iHight_Tail);
QPixmap pPixmap_Tail = this->grab(QRect(geoRect_Tail.x(), geoRect_Tail.y(), iMaxWidth, iHight_Tail));
//保存,方便查看
if(g_iDebug)
@@ -6397,7 +6401,7 @@ void MainWindowCurve::dropEvent(QDropEvent* event)
if (event->mimeData()->hasFormat("text/plain")) {
// 获取拖拽的数据
QString strExtern = event->mimeData()->text();
- qDebug() << strExtern;
+ //qDebug() << strExtern;
//
QStringList list = strExtern.split("#@@#");//QString字符串分割函数
if (list.size() > 3)
@@ -6407,7 +6411,7 @@ void MainWindowCurve::dropEvent(QDropEvent* event)
QString strLineName = list[2];
QString strType = list[3];
- qDebug() << "strSlfName:" << strSlfName<< " strWellName:" << strWellName << " strLineName:" << strLineName << " strType:" << strType;
+ //qDebug() << "strSlfName:" << strSlfName<< " strWellName:" << strWellName << " strLineName:" << strLineName << " strType:" << strType;
if(strType=="curveObject" || strType=="waveObject" || strType=="tableObject")
{
@@ -6481,7 +6485,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("iScale");
if (value.isDouble()) {
int iScale = value.toInt();
- qDebug() << "iScale:" << QString::number(iScale);
+ //qDebug() << "iScale:" << QString::number(iScale);
//
m_iScale = iScale;
}
@@ -6492,7 +6496,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("iY1");
if (value.isDouble()) {
int iY1 = value.toInt();
- qDebug() << "iY1:" << QString::number(iY1);
+ //qDebug() << "iY1:" << QString::number(iY1);
//
m_iY1 = iY1;
}
@@ -6503,7 +6507,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("iY2");
if (value.isDouble()) {
int iY2 = value.toInt();
- qDebug() << "iY2:" << QString::number(iY2);
+ //qDebug() << "iY2:" << QString::number(iY2);
//
m_iY2 = iY2;
}
@@ -6514,7 +6518,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("wells");
if (value.isArray()) {
wellsArray = value.toArray();
- qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
+ //qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
//是否正在加载json
g_iLoadingJson = 1;
@@ -6535,7 +6539,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("heads");
if (value.isArray()) {
m_headsArray = value.toArray();
- qDebug() << "headsArray number:" << QString::number(m_headsArray.size());
+ //qDebug() << "headsArray number:" << QString::number(m_headsArray.size());
}
}
if (object.contains("tails"))
@@ -6546,7 +6550,7 @@ void MainWindowCurve::Open(QString fileFull)
QJsonValue value = object.value("tails");
if (value.isArray()) {
m_tailsArray = value.toArray();
- qDebug() << "tailsArray number:" << QString::number(m_tailsArray.size());
+ //qDebug() << "tailsArray number:" << QString::number(m_tailsArray.size());
}
}
}
@@ -6554,7 +6558,7 @@ void MainWindowCurve::Open(QString fileFull)
//
file.close();
- qDebug() << "JSON 模板文件读取成功!";
+ //qDebug() << "JSON 模板文件读取成功!";
//可视区域高度
int iScreenHeight = this->getScreenHeight();
@@ -6604,7 +6608,7 @@ void MainWindowCurve::OpenMultiWell(QString fileFull)
QJsonValue value = object.value("wells");
if (value.isArray()) {
wellsArray = value.toArray();
- qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
+ //qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
//是否正在加载json
g_iLoadingJson = 1;
@@ -6621,7 +6625,7 @@ void MainWindowCurve::OpenMultiWell(QString fileFull)
//
file.close();
- qDebug() << "JSON 模板文件读取成功!";
+ //qDebug() << "JSON 模板文件读取成功!";
//重置右侧滚动条
// ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100);
@@ -7109,7 +7113,7 @@ void MainWindowCurve::DisplayWells(QJsonArray wellsArray)
QJsonValue value = wellObj.value("id");
if (value.isDouble()) {
id = value.toInt();
- qDebug() << "id:" << QString::number(id);
+ //qDebug() << "id:" << QString::number(id);
//
mapWells.insert(id, i);
}
@@ -7152,7 +7156,7 @@ void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo)
QJsonValue value = wellObjInfo.value("WellName");
if (value.isString()) {
strWellName = value.toString();
- qDebug() << "WellName:" << strWellName;
+ //qDebug() << "WellName:" << strWellName;
}
}
@@ -7161,7 +7165,7 @@ void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo)
QJsonValue value = wellObjInfo.value("SlfName");
if (value.isString()) {
strSlfName = value.toString();
- qDebug() << "strSlfName:" << strSlfName;
+ //qDebug() << "strSlfName:" << strSlfName;
}
}
//新建井
@@ -7186,7 +7190,7 @@ void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo)
QJsonValue value = wellObjInfo.value("formTracks");
if (value.isArray()) {
tracksArray = value.toArray();
- qDebug() << "tracksArray number:" << QString::number(tracksArray.size());
+ //qDebug() << "tracksArray number:" << QString::number(tracksArray.size());
//展示所有道
DisplayTracks(tracksArray);
}
@@ -7211,7 +7215,7 @@ void MainWindowCurve::DisplayTracks(QJsonArray tracksArray)
QJsonValue value = trackObj.value("id");
if (value.isDouble()) {
id = value.toInt();
- qDebug() << "id:" << QString::number(id);
+ //qDebug() << "id:" << QString::number(id);
//
mapTracks.insert(id, i);
}
@@ -7272,7 +7276,7 @@ void MainWindowCurve::DisplayTrack_Top(int id, QJsonObject trackTop, QJsonObject
QJsonValue value = trackTop.value("WellName");
if (value.isString()) {
strWellName = value.toString();
- qDebug() << "WellName:" << strWellName;
+ //qDebug() << "WellName:" << strWellName;
}
}
}