图表上上显示文件名称

This commit is contained in:
brige 2025-07-20 16:34:48 +08:00
parent d2627b1527
commit fc4dd95e72
10 changed files with 218 additions and 76 deletions

View File

@ -423,12 +423,32 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="773"/> <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="640"/>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="666"/>
<source>2D Curve -- %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="642"/>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="649"/>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="669"/>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="677"/>
<source>%1 -- %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="647"/>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="674"/>
<source>2D(y(lg)) Curve -- %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="820"/>
<source>2D Curve</source> <source>2D Curve</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/chartPlot/FitCurveDialog.cpp" line="777"/> <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="831"/>
<source>2D(y(lg)) Curve</source> <source>2D(y(lg)) Curve</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1555,12 +1575,17 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="44"/> <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="51"/>
<source>Signal Indicator Lamp</source> <source>Signal Indicator Lamp</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="192"/> <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="200"/>
<source>%1 -- %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="206"/>
<source>light</source> <source>light</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1581,10 +1606,15 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/chartPlot/SurfaceDialog.cpp" line="44"/> <location filename="../ui/chartPlot/SurfaceDialog.cpp" line="45"/>
<source>3D Curve</source> <source>3D Curve</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../ui/chartPlot/SurfaceDialog.cpp" line="60"/>
<source>3D Curve -- %1</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SystemManagerMenu</name> <name>SystemManagerMenu</name>
@ -1657,10 +1687,15 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/Table/targetlistwgt.cpp" line="63"/> <location filename="../ui/Table/targetlistwgt.cpp" line="70"/>
<source>Data Table</source> <source>Data Table</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../ui/Table/targetlistwgt.cpp" line="127"/>
<source>%1 -- %2</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ViewManagerMenu</name> <name>ViewManagerMenu</name>

View File

@ -1,4 +1,4 @@
#include "CodeEdtUI.h" #include "CodeEdtUI.h"
#include <QPlainTextEdit> #include <QPlainTextEdit>
#include <QMenuBar> #include <QMenuBar>
@ -25,7 +25,7 @@ CodeEdtUI::CodeEdtUI(QWidget *parent)
{ {
ui.setupUi(this); ui.setupUi(this);
// 创建代码编辑器 // 创建代码编辑器
editor = new QPlainTextEdit(this); editor = new QPlainTextEdit(this);
QFont serifFont("Times", 20, QFont::Bold); QFont serifFont("Times", 20, QFont::Bold);
@ -38,7 +38,7 @@ CodeEdtUI::CodeEdtUI(QWidget *parent)
InitBat(); InitBat();
// // 创建菜单 // // 创建菜单
// QMenu* fileMenu = menuBar()->addMenu(tr("&file")); // QMenu* fileMenu = menuBar()->addMenu(tr("&file"));
// QAction* openMainAction = new QAction(tr("&Import the template"), this); // QAction* openMainAction = new QAction(tr("&Import the template"), this);
///* QAction* openLDAction = new QAction(tr("&Import the LD template"), this); ///* QAction* openLDAction = new QAction(tr("&Import the LD template"), this);
@ -55,7 +55,7 @@ CodeEdtUI::CodeEdtUI(QWidget *parent)
// connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile); // connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile);
// // 状态栏 // // 状态栏
// statusBar(); // statusBar();
} }
@ -71,7 +71,7 @@ void CodeEdtUI::AttachDock(DockWidget* dockWidget)
DockTitleBar* dockTitleBar = new DockTitleBar; DockTitleBar* dockTitleBar = new DockTitleBar;
dockTitleBar->SetTitle(u8"bat文件"); dockTitleBar->SetTitle(u8"bat文件");
dockWidget->SetDockWidgetTitleBar(dockTitleBar); dockWidget->SetDockWidgetTitleBar(dockTitleBar);
} }
@ -79,7 +79,7 @@ void CodeEdtUI::AttachDock(DockWidget* dockWidget)
void CodeEdtUI::InitBat() void CodeEdtUI::InitBat()
{ {
{ {
QMenu* fileMenu = menuBar()->addMenu(u8"文件"); QMenu* fileMenu = menuBar()->addMenu(u8"文件");
QDir dir(RecourceHelper::Get().GetBasePath() + "/bat"); QDir dir(RecourceHelper::Get().GetBasePath() + "/bat");
QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks); QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks);
@ -99,12 +99,12 @@ void CodeEdtUI::InitBat()
} }
{ {
QMenu* ctrlMenu = menuBar()->addMenu(u8"控制"); QMenu* ctrlMenu = menuBar()->addMenu(u8"控制");
QAction* runAction = new QAction(tr(u8"执行"), this); QAction* runAction = new QAction(tr(u8"执行"), this);
ctrlMenu->addAction(runAction); ctrlMenu->addAction(runAction);
QAction* saveAction = new QAction(u8"保存", this); QAction* saveAction = new QAction(u8"保存", this);
ctrlMenu->addAction(saveAction); ctrlMenu->addAction(saveAction);
connect(runAction, &QAction::triggered, this, &CodeEdtUI::runFile); connect(runAction, &QAction::triggered, this, &CodeEdtUI::runFile);
@ -182,20 +182,20 @@ void CodeEdtUI::runFile()
{ {
saveFile(); saveFile();
// 创建QProcess对象 // 创建QProcess对象
QProcess process; QProcess process;
// 启动批处理文件 // 启动批处理文件
process.start(m_strCurOpenFile); process.start(m_strCurOpenFile);
// 等待过程完成 // 等待过程完成
process.waitForFinished(); process.waitForFinished();
// 获取输出 // 获取输出
QString output = process.readAllStandardOutput(); QString output = process.readAllStandardOutput();
QString errorOutput = process.readAllStandardError(); QString errorOutput = process.readAllStandardError();
// 打印输出 // 打印输出
qDebug() << "Output:" << output; qDebug() << "Output:" << output;
qDebug() << "Error Output:" << errorOutput; qDebug() << "Error Output:" << errorOutput;
} }

View File

@ -4,6 +4,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QGridLayout> #include <QGridLayout>
#include <QPainter> #include <QPainter>
#include <QFileInfo>
#include "../DockTitleBar.h" #include "../DockTitleBar.h"
#include "../DockWidget.h" #include "../DockWidget.h"
@ -36,12 +37,21 @@ void SignalIndicatorLampUI::AttachDock(DockWidget* dockWidget)
return; return;
} }
if (nullptr != dockWidget) {
m_titleText = dockWidget->windowTitle();
}
dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->SetDockWidgetTitleBar(nullptr);
dockWidget->setWidget(this); dockWidget->setWidget(this);
DockTitleBar* dockTitleBar = new DockTitleBar; DockTitleBar* dockTitleBar = new DockTitleBar;
m_pDockTitleBar = dockTitleBar;
if (m_titleText.isEmpty()) {
dockTitleBar->SetTitle(tr("Signal Indicator Lamp")); dockTitleBar->SetTitle(tr("Signal Indicator Lamp"));
} else {
dockTitleBar->SetTitle(m_titleText);
}
dockWidget->SetDockWidgetTitleBar(dockTitleBar); dockWidget->SetDockWidgetTitleBar(dockTitleBar);
} }
@ -184,12 +194,16 @@ void SignalIndicatorLampUI::UpdateIndicatorLamp(QStringList& lamps, LayoutType t
void SignalIndicatorLampUI::InitLamp(const QString& strFile) void SignalIndicatorLampUI::InitLamp(const QString& strFile)
{ {
ParseLamp(strFile); bool bRet = ParseLamp(strFile);
if (nullptr != m_pDockTitleBar && bRet) {
QFileInfo fileInfo(strFile);
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
QStringList listLamp; QStringList listLamp;
for (size_t i = 0; i < m_iLampCount; i++) for (size_t i = 0; i < m_iLampCount; i++)
{ {
listLamp <<tr("light") + QString::number(i+1); // 指示灯 listLamp <<tr("light") + QString::number(i+1); // ָʾ<EFBFBD><EFBFBD>
} }
InitIndicatorLamp(listLamp, SignalIndicatorLampUI::HLyt, listLamp.size()); InitIndicatorLamp(listLamp, SignalIndicatorLampUI::HLyt, listLamp.size());
@ -270,12 +284,12 @@ void SignalIndicatorLampUI::paintEvent(QPaintEvent* event)
painter.drawRect(QRect(5,5,rect().width() - 10, rect().height() - 10)); painter.drawRect(QRect(5,5,rect().width() - 10, rect().height() - 10));
} }
void SignalIndicatorLampUI::ParseLamp(const QString& strFile) bool SignalIndicatorLampUI::ParseLamp(const QString& strFile)
{ {
if (strFile.isEmpty()) if (strFile.isEmpty())
{ {
QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Lamp文件路径")); QMessageBox::information(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Lamp<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
return; return false;
} }
m_lampStatus.clear(); m_lampStatus.clear();
@ -300,4 +314,6 @@ void SignalIndicatorLampUI::ParseLamp(const QString& strFile)
file.close(); file.close();
} }
return true;
} }

View File

@ -13,11 +13,11 @@ class SignalIndicatorLampUI : public QWidget
Q_OBJECT Q_OBJECT
public: public:
enum LayoutType // 信号灯布局类型 enum LayoutType // <EFBFBD>źŵƲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ {
HLyt, // ˮƽ HLyt, // ˮƽ
VLyt, // 垂直 VLyt, // <EFBFBD><EFBFBD>ֱ
GLyt, // 网格 GLyt, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}; };
SignalIndicatorLampUI( QWidget *parent = Q_NULLPTR); SignalIndicatorLampUI( QWidget *parent = Q_NULLPTR);
@ -42,7 +42,7 @@ protected slots:
protected: protected:
void paintEvent(QPaintEvent* event); void paintEvent(QPaintEvent* event);
void ParseLamp(const QString& strFile); bool ParseLamp(const QString& strFile);
private: private:
Ui::SignalIndicatorLampUI ui; Ui::SignalIndicatorLampUI ui;
@ -51,4 +51,7 @@ private:
QList<int> m_lampStatus; QList<int> m_lampStatus;
int m_iLampCount = 0; int m_iLampCount = 0;
QString m_titleText;
class DockTitleBar* m_pDockTitleBar { nullptr };
}; };

View File

@ -6,7 +6,8 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QDateTime> #include <QDateTime>
#include <QMenu> #include <QMenu>
#include <qdebug.h> #include <QDebug>
#include <QFileInfo>
#include <windows.h> #include <windows.h>
#include <windowsx.h> #include <windowsx.h>
@ -55,12 +56,21 @@ void TargetListWgt::AttachDock(DockWidget* dockWidget)
return; return;
} }
if (nullptr != dockWidget) {
m_titleText = dockWidget->windowTitle();
}
dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->SetDockWidgetTitleBar(nullptr);
dockWidget->setWidget(this); dockWidget->setWidget(this);
DockTitleBar* dockTitleBar = new DockTitleBar; DockTitleBar* dockTitleBar = new DockTitleBar;
m_pDockTitleBar = dockTitleBar;
if (m_titleText.isEmpty()) {
dockTitleBar->SetTitle(tr("Data Table")); dockTitleBar->SetTitle(tr("Data Table"));
} else {
dockTitleBar->SetTitle(m_titleText);
}
dockWidget->SetDockWidgetTitleBar(dockTitleBar); dockWidget->SetDockWidgetTitleBar(dockTitleBar);
} }
@ -110,7 +120,12 @@ void TargetListWgt::InitFile(const QString& strFile, int iBatchCount)
m_iBatchCount = iBatchCount; m_iBatchCount = iBatchCount;
m_strFile = strFile; m_strFile = strFile;
m_vecReportPoint.clear(); m_vecReportPoint.clear();
ParseReport(strFile, m_vecReportPoint, m_iBatchCount); bool bRet = ParseReport(strFile, m_vecReportPoint, m_iBatchCount);
if (nullptr != m_pDockTitleBar && bRet) {
QFileInfo fileInfo(strFile);
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
UpdateTable(1); UpdateTable(1);
@ -149,12 +164,12 @@ void TargetListWgt::InitWgt()
connect(ui.tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int)), this, SLOT(slotSortTabCol(int))); connect(ui.tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int)), this, SLOT(slotSortTabCol(int)));
} }
void TargetListWgt::ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount) bool TargetListWgt::ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount)
{ {
if (strFile.isEmpty()) if (strFile.isEmpty())
{ {
QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Report文件路径")); QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Report文件路径"));
return; return false;
} }
QFile file(strFile); QFile file(strFile);
@ -190,6 +205,8 @@ void TargetListWgt::ParseReport(const QString& strFile, std::vector<std::vector<
file.close(); file.close();
} }
return true;
} }
void TargetListWgt::slotSortTabCol(int nCol) void TargetListWgt::slotSortTabCol(int nCol)

View File

@ -37,7 +37,7 @@ public:
protected: protected:
void InitWgt(); void InitWgt();
void ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount = 50); bool ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount = 50);
void UpdatePageNum(); void UpdatePageNum();
void UpdateButtonEnable(); // 更新按钮状态 void UpdateButtonEnable(); // 更新按钮状态
@ -80,4 +80,7 @@ private:
std::vector<std::vector<std::vector<float>>> m_vecReportPoint; std::vector<std::vector<std::vector<float>>> m_vecReportPoint;
int m_iBatchCount; int m_iBatchCount;
QString m_titleText;
class DockTitleBar* m_pDockTitleBar { nullptr };
}; };

View File

@ -632,7 +632,24 @@ void FitCurveDialog::InitWaveFile(const QString& strFile, int iBatchCount)
return; return;
m_vecWavePoint.clear(); m_vecWavePoint.clear();
ParseWave(strFile, m_vecWavePoint, iBatchCount); bool bRet = ParseWave(strFile, m_vecWavePoint, iBatchCount);
if (nullptr != m_pDockTitleBar && bRet) {
QFileInfo fileInfo(strFile);
if (1 == m_iType) {
if (m_titleText.isEmpty()) {
m_pDockTitleBar->SetTitle(tr("2D Curve -- %1").arg(fileInfo.fileName()));
} else {
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
} else {
if (m_titleText.isEmpty()) {
m_pDockTitleBar->SetTitle(tr("2D(y(lg)) Curve -- %1").arg(fileInfo.fileName()));
} else {
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
}
}
} }
void FitCurveDialog::InitReportFile(const QString& strFile, int iBatchCount) void FitCurveDialog::InitReportFile(const QString& strFile, int iBatchCount)
@ -641,15 +658,35 @@ void FitCurveDialog::InitReportFile(const QString& strFile, int iBatchCount)
return; return;
m_vecReportPoint.clear(); m_vecReportPoint.clear();
ParseReport(strFile, m_vecReportPoint, iBatchCount); bool bRet = ParseReport(strFile, m_vecReportPoint, iBatchCount);
if (nullptr != m_pDockTitleBar && bRet) {
QFileInfo fileInfo(strFile);
if (1 == m_iType) {
if (m_titleText.isEmpty()) {
m_pDockTitleBar->SetTitle(tr("2D Curve -- %1").arg(fileInfo.fileName()));
}
else {
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
} else {
if (m_titleText.isEmpty()) {
m_pDockTitleBar->SetTitle(tr("2D(y(lg)) Curve -- %1").arg(fileInfo.fileName()));
}
else {
m_pDockTitleBar->SetTitle(tr("%1 -- %2").arg(m_titleText).arg(fileInfo.fileName()));
}
}
}
} }
void FitCurveDialog::ParseWave(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecWavePoint, int iRowCount) bool FitCurveDialog::ParseWave(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecWavePoint, int iRowCount)
{ {
if (strFile.isEmpty()) if (strFile.isEmpty())
{ {
QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Wave文件路径")); QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Wave文件路径"));
return; return false;
} }
QFile file(strFile); QFile file(strFile);
@ -684,14 +721,16 @@ void FitCurveDialog::ParseWave(const QString& strFile, std::vector<std::vector<s
file.close(); file.close();
} }
return true;
} }
void FitCurveDialog::ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount) bool FitCurveDialog::ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount)
{ {
if (strFile.isEmpty()) if (strFile.isEmpty())
{ {
QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Report文件路径")); QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据Report文件路径"));
return; return false;
} }
QFile file(strFile); QFile file(strFile);
@ -731,6 +770,8 @@ void FitCurveDialog::ParseReport(const QString& strFile, std::vector<std::vector
} }
slotUpdateTime(1); slotUpdateTime(1);
return true;
} }
void FitCurveDialog::OnWorkSpaceChanged(WorkSpace* worksapce) { void FitCurveDialog::OnWorkSpaceChanged(WorkSpace* worksapce) {
@ -766,16 +807,33 @@ void FitCurveDialog::AttachDock(DockWidget* dockWidget)
dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->SetDockWidgetTitleBar(nullptr);
dockWidget->setWidget(this); dockWidget->setWidget(this);
if (nullptr != dockWidget) {
m_titleText = dockWidget->windowTitle();
}
DockTitleBar* dockTitleBar = new DockTitleBar; DockTitleBar* dockTitleBar = new DockTitleBar;
m_pDockTitleBar = dockTitleBar;
if (1 == m_iType) if (1 == m_iType)
{
if (m_titleText.isEmpty())
{ {
dockTitleBar->SetTitle(tr("2D Curve")); dockTitleBar->SetTitle(tr("2D Curve"));
} }
else else
{
dockTitleBar->SetTitle(m_titleText);
}
}
else
{
if (m_titleText.isEmpty())
{ {
dockTitleBar->SetTitle(tr("2D(y(lg)) Curve")); dockTitleBar->SetTitle(tr("2D(y(lg)) Curve"));
} }
else {
dockTitleBar->SetTitle(m_titleText);
}
}
dockWidget->SetDockWidgetTitleBar(dockTitleBar); dockWidget->SetDockWidgetTitleBar(dockTitleBar);
} }

View File

@ -29,8 +29,8 @@ public:
void InitReportFile(const QString& strFile, int iBatchCount = 50); void InitReportFile(const QString& strFile, int iBatchCount = 50);
protected: protected:
void ParseWave(const QString& strFile, std::vector < std::vector<std::vector<float>>>& vecWavePoint, int iRowCount = 50); bool ParseWave(const QString& strFile, std::vector < std::vector<std::vector<float>>>& vecWavePoint, int iRowCount = 50);
void ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount = 50); bool ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount = 50);
void OnWorkSpaceChanged(class WorkSpace*); void OnWorkSpaceChanged(class WorkSpace*);
void OnTimestepChanged(class Timestep*); void OnTimestepChanged(class Timestep*);
@ -40,7 +40,7 @@ public slots:
void slotAddSeries(QVariant varSeriesData); void slotAddSeries(QVariant varSeriesData);
void slotDelCurve(int iID); // 删除曲线 void slotDelCurve(int iID); // ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void slotInserKeyPoint(int iID,float xValue, float yValue); void slotInserKeyPoint(int iID,float xValue, float yValue);
@ -51,14 +51,14 @@ private:
FitCurveChartView* curveChartView; FitCurveChartView* curveChartView;
QChart* curveChart; QChart* curveChart;
//QSplineSeries* fitPointsSeriesS; //要显示的曲线原始数据 //QSplineSeries* fitPointsSeriesS; //Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//QScatterSeries* tipSeries; //QScatterSeries* tipSeries;
//QSplineSeries* xGuideSeries; //鼠标悬浮位置点的x轴辅助线 //QSplineSeries* xGuideSeries; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//QSplineSeries* yGuideSeries; //鼠标悬浮位置点的y轴辅助线 //QSplineSeries* yGuideSeries; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool isPressed = false; //图标是否在拖拽中 bool isPressed = false; //ͼ<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ק<EFBFBD><EFBFBD>
QPoint pressedPoint; //鼠标拖拽起点 QPoint pressedPoint; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ק<EFBFBD><EFBFBD><EFBFBD>
int m_iType; // y轴曲线 int m_iType; // y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QValueAxis* m_pAxisX = NULL; QValueAxis* m_pAxisX = NULL;
QValueAxis* m_pAxisY = NULL; QValueAxis* m_pAxisY = NULL;
@ -74,6 +74,8 @@ private:
std::vector<std::vector<std::vector<float>>> m_vecReportPoint; std::vector<std::vector<std::vector<float>>> m_vecReportPoint;
int m_iID = 1; int m_iID = 1;
QString m_titleText;
class DockTitleBar* m_pDockTitleBar { nullptr };
}; };
#endif // FITCURVEDIALOG_H #endif // FITCURVEDIALOG_H

View File

@ -7,6 +7,7 @@
#include <QScatterDataItem> #include <QScatterDataItem>
#include <QMessageBox> #include <QMessageBox>
#include <Q3DCamera> #include <Q3DCamera>
#include <QFileInfo>
#include "common/SpdLogger.h" #include "common/SpdLogger.h"
#include "workspace/WorkSpace.h" #include "workspace/WorkSpace.h"
@ -39,11 +40,11 @@ void SurfaceDialog::AttachDock(DockWidget* dockWidget)
dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->SetDockWidgetTitleBar(nullptr);
dockWidget->setWidget(this); dockWidget->setWidget(this);
DockTitleBar* dockTitleBar = new DockTitleBar; m_pDockTitleBar = new DockTitleBar;
dockTitleBar->SetTitle(tr("3D Curve")); m_pDockTitleBar->SetTitle(tr("3D Curve"));
dockWidget->SetDockWidgetTitleBar(dockTitleBar); dockWidget->SetDockWidgetTitleBar(m_pDockTitleBar);
} }
void SurfaceDialog::InitRD(const QString& strFile, int iBatch, int iRowCount) void SurfaceDialog::InitRD(const QString& strFile, int iBatch, int iRowCount)
@ -52,26 +53,31 @@ void SurfaceDialog::InitRD(const QString& strFile, int iBatch, int iRowCount)
return; return;
m_vecRDPoint.clear(); m_vecRDPoint.clear();
ParseRD(strFile, m_vecRDPoint,iBatch, iRowCount); bool bRet = ParseRD(strFile, m_vecRDPoint,iBatch, iRowCount);
if (nullptr != m_pDockTitleBar && bRet) {
QFileInfo fileInfo(strFile);
m_pDockTitleBar->SetTitle(tr("3D Curve -- %1").arg(fileInfo.fileName()));
}
} }
void SurfaceDialog::slotAddSeries(QVariant varSeriesData) void SurfaceDialog::slotAddSeries(QVariant varSeriesData)
{ {
// 数据无效 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
if (!varSeriesData.isValid()) if (!varSeriesData.isValid())
{ {
return; return;
} }
QVariantList varCurDataList = varSeriesData.toMap().value("Data").toList(); // 数据 QVariantList varCurDataList = varSeriesData.toMap().value("Data").toList(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QColor color = varSeriesData.toMap().value("Color").value<QColor>(); // 曲线颜色 QColor color = varSeriesData.toMap().value("Color").value<QColor>(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
QString strXName = varSeriesData.toMap().value("xTitle").toString(); // x轴名称 QString strXName = varSeriesData.toMap().value("xTitle").toString(); // x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strYName = varSeriesData.toMap().value("yTitle").toString(); // y轴名称 QString strYName = varSeriesData.toMap().value("yTitle").toString(); // y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strZName = varSeriesData.toMap().value("zTitle").toString(); // z轴名称 QString strZName = varSeriesData.toMap().value("zTitle").toString(); // z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int iID = varSeriesData.toMap().value("ID").toInt(); // y轴类型 int iID = varSeriesData.toMap().value("ID").toInt(); // y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool bAdd = varSeriesData.toMap().value("Add").toBool(); // 曲线名称 bool bAdd = varSeriesData.toMap().value("Add").toBool(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int iCurveType = varSeriesData.toMap().value("curveType").toInt(); // 曲线类型 int iCurveType = varSeriesData.toMap().value("curveType").toInt(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (iCurveType != 3) // 二维曲线 if (iCurveType != 3) // <EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ {
return; return;
} }
@ -149,7 +155,7 @@ void SurfaceDialog::slotAddSeries(QVariant varSeriesData)
m_p3DYAxis->setRange(m_iMinZ, m_iMaxZ); m_p3DYAxis->setRange(m_iMinZ, m_iMaxZ);
m_p3DZAxis->setRange(m_iMinY, m_iMaxY); m_p3DZAxis->setRange(m_iMinY, m_iMaxY);
// 设置颜色样式 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>ʽ
m_pSeries->setBaseColor(color); m_pSeries->setBaseColor(color);
m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform); m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
m_pSeries->setSingleHighlightColor(color); m_pSeries->setSingleHighlightColor(color);
@ -158,7 +164,7 @@ void SurfaceDialog::slotAddSeries(QVariant varSeriesData)
void SurfaceDialog::slotInserKeyPoint(float xValue, float yValue, float zValue) void SurfaceDialog::slotInserKeyPoint(float xValue, float yValue, float zValue)
{ {
QVector3D vecItem(xValue, yValue, zValue); QVector3D vecItem(xValue, yValue, zValue);
// 更新x轴最大值最小值 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Сֵ
if (m_iMinX > xValue) if (m_iMinX > xValue)
{ {
m_iMinX = xValue; m_iMinX = xValue;
@ -334,13 +340,13 @@ void SurfaceDialog::InitSurface()
pLyt->addWidget(containerHandle); pLyt->addWidget(containerHandle);
// 设置颜色样式 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>ʽ
m_pSeries->setBaseColor(Qt::green); m_pSeries->setBaseColor(Qt::green);
m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform); m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
m_pSeries->setSingleHighlightColor(Qt::green); m_pSeries->setSingleHighlightColor(Qt::green);
m_pSeries->setMeshSmooth(false); // 设置网格是否平滑 m_pSeries->setMeshSmooth(false); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ƽ<EFBFBD><EFBFBD>
m_pSeries->setFlatShadingEnabled(false); // 启用或禁用平面着色 m_pSeries->setFlatShadingEnabled(false); // <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
} }
void SurfaceDialog::InitScatter() void SurfaceDialog::InitScatter()
@ -358,12 +364,12 @@ void SurfaceDialog::InitScatter()
pLyt->addWidget(container); pLyt->addWidget(container);
} }
void SurfaceDialog::ParseRD(const QString& strFile, std::vector < std::vector<std::vector<float>>>& vecRDPoint, int iBatchCount, int iRowCount) bool SurfaceDialog::ParseRD(const QString& strFile, std::vector < std::vector<std::vector<float>>>& vecRDPoint, int iBatchCount, int iRowCount)
{ {
if (strFile.isEmpty()) if (strFile.isEmpty())
{ {
QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请检查数据RD文件路径")); QMessageBox::information(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RD<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
return; return false;
} }
QFile file(strFile); QFile file(strFile);
@ -398,4 +404,5 @@ void SurfaceDialog::ParseRD(const QString& strFile, std::vector < std::vector<st
file.close(); file.close();
} }
return true;
} }

View File

@ -32,7 +32,7 @@ protected:
void InitSurface(); void InitSurface();
void InitScatter(); void InitScatter();
void ParseRD(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecRDPoint, int iBatchCount = 50, int iRowCount = 64); bool ParseRD(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecRDPoint, int iBatchCount = 50, int iRowCount = 64);
private: private:
Ui::SurfaceDialog ui; Ui::SurfaceDialog ui;
@ -54,4 +54,5 @@ private:
float m_iMaxZ = 10; float m_iMaxZ = 10;
std::vector<std::vector<std::vector<float>>> m_vecRDPoint; std::vector<std::vector<std::vector<float>>> m_vecRDPoint;
class DockTitleBar* m_pDockTitleBar { nullptr };
}; };