添加导入导出菜单,导出图片菜单

This commit is contained in:
zhaolei 2026-04-22 09:58:42 +08:00
parent 58fc749234
commit 802f654c3d
8 changed files with 170 additions and 40 deletions

View File

@ -38,6 +38,13 @@ signals:
void sig_OpenProject(QString strName);//打开项目 void sig_OpenProject(QString strName);//打开项目
void sig_CloseProject();//关闭项目 void sig_CloseProject();//关闭项目
void sig_ImportSingleWellLogData();//数据导入
void sig_OutWellLogRound();//输出数据,数据导出
void sig_SaveAsPicture(); //导出长图
void sig_SaveAsPdf(); //导出PDF
void sig_SaveAsSvg(); //导出SVG
void sig_ShowParameterCard(QString strSlfName, QString strName);//参数表查看 void sig_ShowParameterCard(QString strSlfName, QString strName);//参数表查看
void sig_ShowCurve(QMap<QString,QList<QString>> mapShowObject);//曲线数据查看 void sig_ShowCurve(QMap<QString,QList<QString>> mapShowObject);//曲线数据查看
void sig_DepthShift(QString strSlfName, QString strName, double DepthOffset);//深度移动 void sig_DepthShift(QString strSlfName, QString strName, double DepthOffset);//深度移动

View File

@ -1504,7 +1504,7 @@ void TranToAscii(CMemRdWt *mrw,QString Outfile,float sdep,float edep,float rlev,
return; return;
} }
FILE *fp; FILE *fp;
fp=fopen(Outfile.toStdString().c_str(),"wt+"); fp=fopen(UTF8ToGBK(Outfile)/*Outfile.toStdString().c_str()*/,"wt+");
if(fp==NULL) if(fp==NULL)
{ {
QMessageBox::information(NULL,"提示","打开输出文件"+Outfile+"失败"); QMessageBox::information(NULL,"提示","打开输出文件"+Outfile+"失败");
@ -4333,7 +4333,7 @@ void TranSlf2Data(int FormatType,QMap <QString,vector<QString> > OutFileInfVec,O
//如果输出文件目录不存在,先创建目录 //如果输出文件目录不存在,先创建目录
QFileInfo rFileInfo(Outfile); QFileInfo rFileInfo(Outfile);
QDir rDir = rFileInfo.absoluteDir(); QDir rDir = rFileInfo.absoluteDir();
if(!rDir.exists())rDir.mkpath(rFileInfo.absolutePath()); if(!rDir.exists())rDir.mkpath(UTF8ToGBK(rFileInfo.absolutePath()));
if(FormatType<=3) if(FormatType<=3)
TranToAscii(&mrw,Outfile,Outsdep,Outedep,Outrlev,NumObject,&OutInf[0],FormatType,IsCheck[5]); TranToAscii(&mrw,Outfile,Outsdep,Outedep,Outrlev,NumObject,&OutInf[0],FormatType,IsCheck[5]);

View File

@ -225,11 +225,15 @@ void MainWindow::initTitleBar()
// //
QMenu* m_dataMenu = this->menuBar()->addMenu(tr("数据管理(&D)")); QMenu* m_dataMenu = this->menuBar()->addMenu(tr("数据管理(&D)"));
// m_dataMenu->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_ImportSingleWellLogData()));
QMenu* m_resultMenu = this->menuBar()->addMenu(tr("成果输出(&R)"));
// //
QMenu* m_analyzeToolMenu = this->menuBar()->addMenu(tr("分析工具(&W)")); QMenu* m_analyzeToolMenu = this->menuBar()->addMenu(tr("分析工具(&W)"));
// //
QMenu* m_resultMenu = this->menuBar()->addMenu(tr("成果输出(&R)"));
m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/SaveAsPicture.png"), tr("&导出长图"), this, SLOT(s_SaveAsPicture()));
m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/ExportPDF.png"), tr("&导出PDF"), this, SLOT(s_SaveAsPdf()));
m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/ExportSVG.png"), tr("&导出SVG"), this, SLOT(s_SaveAsSvg()));
//
QMenu* m_SystemToolMenu = this->menuBar()->addMenu(tr("系统工具(&T)")); QMenu* m_SystemToolMenu = this->menuBar()->addMenu(tr("系统工具(&T)"));
// //
QMenu* m_helpMenu = this->menuBar()->addMenu(tr("帮助(&H)")); QMenu* m_helpMenu = this->menuBar()->addMenu(tr("帮助(&H)"));
@ -257,8 +261,8 @@ void MainWindow::initToolBar()
ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "openproject.png"), tr("&打开项目"), this, SLOT(s_Open())); ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "openproject.png"), tr("&打开项目"), this, SLOT(s_Open()));
ui->mainToolBar->addSeparator();//添加分隔符 ui->mainToolBar->addSeparator();//添加分隔符
// //
ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_wellog())); ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_ImportSingleWellLogData()));
ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "outcurves.png"), tr("&数据导出"), this, SLOT(s_outcurves())); ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "outcurves.png"), tr("&数据导出"), this, SLOT(s_OutWellLogRound()));
ui->mainToolBar->addSeparator();//添加分隔符 ui->mainToolBar->addSeparator();//添加分隔符
// //
ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellsectionwindow.png"), tr("&可视解释"), this, SLOT(s_showView())); ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellsectionwindow.png"), tr("&可视解释"), this, SLOT(s_showView()));
@ -432,6 +436,31 @@ void MainWindow::s_Open()
} }
} }
void MainWindow::s_ImportSingleWellLogData()
{
emit CallManage::getInstance()->sig_ImportSingleWellLogData();
}
void MainWindow::s_OutWellLogRound()
{
emit CallManage::getInstance()->sig_OutWellLogRound();
}
void MainWindow::s_SaveAsPicture()
{
emit CallManage::getInstance()->sig_SaveAsPicture();
}
void MainWindow::s_SaveAsPdf()
{
emit CallManage::getInstance()->sig_SaveAsPdf();
}
void MainWindow::s_SaveAsSvg()
{
emit CallManage::getInstance()->sig_SaveAsSvg();
}
void MainWindow::s_SaveProject() void MainWindow::s_SaveProject()
{ {
// //加载插件显示 // //加载插件显示

View File

@ -68,6 +68,11 @@ public:
public slots: public slots:
void s_New(); void s_New();
void s_Open(); void s_Open();
void s_ImportSingleWellLogData();
void s_OutWellLogRound();
void s_SaveAsPicture();
void s_SaveAsPdf();
void s_SaveAsSvg();
void s_SaveProject(); void s_SaveProject();
void s_CloseProject(); void s_CloseProject();
void slotExitSystem(); void slotExitSystem();

View File

@ -306,6 +306,10 @@ void MainWindowCurve::initMainToolBar()
connect(m_SaveAsPdfAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsPdf); connect(m_SaveAsPdfAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsPdf);
connect(m_SaveAsSvgAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsSvg); connect(m_SaveAsSvgAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsSvg);
connect(CallManage::getInstance(), SIGNAL(sig_SaveAsPicture()), this, SLOT(s_SaveAsPicture()));
connect(CallManage::getInstance(), SIGNAL(sig_SaveAsPdf()), this, SLOT(s_SaveAsPdf()));
connect(CallManage::getInstance(), SIGNAL(sig_SaveAsSvg()), this, SLOT(s_SaveAsSvg()));
// connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize); // connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize);
// connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne); // connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne);
// connect(m_debugAc, &QAction::triggered, this, &MainWindow::s_DrawImg); // connect(m_debugAc, &QAction::triggered, this, &MainWindow::s_DrawImg);

View File

@ -58,6 +58,12 @@ QtProjectWidgets::QtProjectWidgets(QWidget *parent)
//关联信号槽,关闭项目 //关联信号槽,关闭项目
connect(CallManage::getInstance(), SIGNAL(sig_CloseProject()), this, SLOT(s_CloseProject())); connect(CallManage::getInstance(), SIGNAL(sig_CloseProject()), this, SLOT(s_CloseProject()));
//关联信号槽,数据导入
connect(CallManage::getInstance(), SIGNAL(sig_ImportSingleWellLogData()), this, SLOT(onImportSingleWellLogDataToolBar()));
//关联信号槽,输出数据,数据导出
connect(CallManage::getInstance(), SIGNAL(sig_OutWellLogRound()), this, SLOT(onOutWellLogRound()));
//向左侧树图,追加固井结论表格 //向左侧树图,追加固井结论表格
connect(CallManage::getInstance(), SIGNAL(sig_AddGujingToTree(QString,QString,QString)), this, SLOT(s_AddGujingToTree(QString,QString,QString))); connect(CallManage::getInstance(), SIGNAL(sig_AddGujingToTree(QString,QString,QString)), this, SLOT(s_AddGujingToTree(QString,QString,QString)));
@ -771,10 +777,10 @@ void QtProjectWidgets::initWellsTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCopyObject())); connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCopyObject()));
menu->addAction(action_New); menu->addAction(action_New);
// action_New = new QAction("输出数据", treeWidget); action_New = new QAction("输出数据", treeWidget);
// action_New->setIcon(QIcon(GetImagePath() + "icon/outcurves.png")); // 设置图标 action_New->setIcon(QIcon(GetImagePath() + "icon/outcurves.png")); // 设置图标
// connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onOutWellLogRound())); connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onOutWellLogRound()));
// menu->addAction(action_New); menu->addAction(action_New);
} }
//初始化参数卡-右键菜单 //初始化参数卡-右键菜单
void QtProjectWidgets::initParameterCardTreeMenu(QMenu *menu, QTreeWidget *treeWidget) void QtProjectWidgets::initParameterCardTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
@ -1857,7 +1863,7 @@ void QtProjectWidgets::onImportFolder()
return; return;
} }
void QtProjectWidgets::onImportSingleWellLogData() void QtProjectWidgets::ImportSingleWellLogData(bool bToolBar)
{ {
MainWindow* pMainWindow = nullptr; MainWindow* pMainWindow = nullptr;
@ -1901,28 +1907,30 @@ void QtProjectWidgets::onImportSingleWellLogData()
QMessageBox::information(NULL,"无法识别的文件",listFiles[0]); QMessageBox::information(NULL,"无法识别的文件",listFiles[0]);
return ; return ;
} }
QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
QString wellname = wellItem->text(0); QFileInfo temDir(file_name);
QString tempWellName=temDir.completeBaseName();
tempWellName.replace(" ","");//whp add 2020.3.3 删除井名中的空格
//m_WellLogRoundInfo->SetName(tempWellName.toStdString());
QString wellname = tempWellName;
QString wellroundname = wellname; QString wellroundname = wellname;
QString strTreeTag = wellItem->data(0, Qt::UserRole).toString();
if (strTreeTag == "wells") //井组
{
QFileInfo temDir(file_name);
QString tempWellName=temDir.completeBaseName();
tempWellName.replace(" ","");//whp add 2020.3.3 删除井名中的空格
//m_WellLogRoundInfo->SetName(tempWellName.toStdString());
wellname = tempWellName;
wellroundname = wellname;
}
else if (strTreeTag == "wellname") //井名
{
} if (!bToolBar)
else if (strTreeTag == "wellItem") //井次
{ {
wellname = wellItem->parent()->text(0); QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
QString strTreeTag = wellItem->data(0, Qt::UserRole).toString();
if (strTreeTag == "wellname") //井名
{
wellname = wellItem->text(0);
}
else if (strTreeTag == "wellItem") //井次
{
wellname = wellItem->parent()->text(0);
wellroundname = wellItem->text(0);
}
} }
CDataImport::m_prjname = g_prjname; CDataImport::m_prjname = g_prjname;
ImportDataDialog *pDialog = new ImportDataDialog(NULL,wellname,wellroundname); ImportDataDialog *pDialog = new ImportDataDialog(NULL,wellname,wellroundname);
QTreeWidgetItem rootItem = *ui->treeWidget->topLevelItem(0); QTreeWidgetItem rootItem = *ui->treeWidget->topLevelItem(0);
@ -1934,11 +1942,20 @@ void QtProjectWidgets::onImportSingleWellLogData()
QString strProjectFile = strProjectFolder + g_prjname; QString strProjectFile = strProjectFolder + g_prjname;
strProjectFile += ".wwl"; strProjectFile += ".wwl";
s_OpenProject(strProjectFile); s_OpenProject(strProjectFile);
return ;
} }
} }
} }
void QtProjectWidgets::onImportSingleWellLogData()
{
ImportSingleWellLogData(false);
}
void QtProjectWidgets::onImportSingleWellLogDataToolBar()
{
ImportSingleWellLogData(true);
}
void QtProjectWidgets::onImportSlfTable() void QtProjectWidgets::onImportSlfTable()
{ {
// CInDefTableDlg InDefTableDlg(0); // CInDefTableDlg InDefTableDlg(0);
@ -1961,16 +1978,81 @@ void QtProjectWidgets::onImportSlfTable()
void QtProjectWidgets::onOutWellLogRound() void QtProjectWidgets::onOutWellLogRound()
{ {
QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
QString wellname = wellItem->text(0);
QString wellroundname = wellname;
QString folderPath = GetLogdataPath();
folderPath = folderPath + g_prjname;
folderPath = folderPath + "/" + "#" + wellname + "/" + wellroundname + ".slf";
QStringList namelist;//=GetSelWellRound(); QStringList namelist;//=GetSelWellRound();
namelist<<folderPath; QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
if (wellItem)
{
QString strTreeTag = wellItem->data(0, Qt::UserRole).toString();
if (strTreeTag == "wellname") //井名
{
int childCount = wellItem->childCount(); // 获取子节点数量
for (int i = 0; i < childCount; ++i)
{
QTreeWidgetItem *wellround = wellItem->child(i);
QString strSlfFile = wellItem->child(i)->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名
namelist<<strSlfFile;
}
}
else if (strTreeTag == "wellItem") //井次
{
QString strSlfFile = wellItem->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名
namelist<<strSlfFile;
}
else
{
QTreeWidgetItem *parenItem = wellItem->parent();
while(parenItem)
{
if (parenItem == ui->treeWidget->topLevelItem(0))
break;
strTreeTag = wellItem->data(0, Qt::UserRole).toString();
if (strTreeTag == "wellItem") //井次
{
QString strSlfFile = wellItem->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名
namelist<<strSlfFile;
break;
}
parenItem = wellItem->parent();
}
}
}
if (namelist.size()==0)
{
int topCount = ui->treeWidget->topLevelItemCount(); // 获取顶级节点数量
if(topCount<1)
{
return;
}
QTreeWidgetItem *item = ui->treeWidget->topLevelItem(0);
int childCount = item->childCount(); // 获取子节点数量
for (int i = 0; i < childCount; ++i)
{
//井组,数据分析...
QTreeWidgetItem *wellGroupItem = item->child(i);
QString wellGroupname = wellGroupItem->text(0);
if (wellGroupname == "井组")
{
int wellCount = wellGroupItem->childCount(); // 获取井节点数量
for (int j = 0; j < wellCount; ++j)
{
QTreeWidgetItem *wellchild = wellGroupItem->child(j);
int wellchildCount = wellchild->childCount(); // 获取井节点数量
for (int k = 0; k < wellchildCount; ++k)
{
QString strTreeTag = wellchild->child(k)->data(0, Qt::UserRole).toString();
if (strTreeTag == "wellItem") //井次
{
QString strSlfFile = wellchild->child(k)->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名
namelist<<strSlfFile;
}
}
}
}
}
}
if (namelist.size()==0)
return;
QStringList curvelist;//=GetSelCurve(); QStringList curvelist;//=GetSelCurve();
CDataOutPut* moutPut=new CDataOutPut(); CDataOutPut* moutPut=new CDataOutPut();
if(!moutPut)return; if(!moutPut)return;

View File

@ -61,7 +61,8 @@ public slots:
void onCutSlf(); //剪切井次 void onCutSlf(); //剪切井次
void onEditWelllogRound(); void onEditWelllogRound();
void onImportFolder(); //按目录导入测井数据 void onImportFolder(); //按目录导入测井数据
void onImportSingleWellLogData(); void onImportSingleWellLogData(); //数据导入
void onImportSingleWellLogDataToolBar(); //数据导入(工具栏)
void onImportSlfTable(); void onImportSlfTable();
void onOutWellLogRound(); void onOutWellLogRound();
void onCopyObject(); //数据对象拷贝 void onCopyObject(); //数据对象拷贝
@ -154,6 +155,8 @@ public:
void initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); void initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(波列目录)-右键菜单 //初始化根节点(波列目录)-右键菜单
void initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); void initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//数据导入
void ImportSingleWellLogData(bool bToolBar);
private: private:

View File

@ -109,7 +109,7 @@ int CSLFAsciiConvertor::ScanLogFile(char *FileName,char *Message,char **CurveNa
char name[curve_name_len+1],temps[15]; char name[curve_name_len+1],temps[15];
int i,j,num; int i,j,num;
// CString cs,csOutName; // CString cs,csOutName;
QFile InFile(FileName); QFile InFile(GBKToUTF8(FileName));
if( !InFile.open(QIODevice::ReadOnly ) )return 0; if( !InFile.open(QIODevice::ReadOnly ) )return 0;
QTextStream textstream( &InFile ); QTextStream textstream( &InFile );
QString str = textstream.readLine(); QString str = textstream.readLine();