modify fit cureve dialog

This commit is contained in:
pimin 2025-10-13 13:59:48 +08:00
parent 32748eb36a
commit 06efe914f7
4 changed files with 136 additions and 0 deletions

View File

@ -175,6 +175,7 @@ void MainWindow::InitUI() {
//ui->status->setText(tr("start: no start")); //ui->status->setText(tr("start: no start"));
InitDockLayout(); InitDockLayout();
InitChartLayout();
//ui->viewWidget->layout()->addWidget(qtOsgViewWidget_); //ui->viewWidget->layout()->addWidget(qtOsgViewWidget_);
qtOsgViewWidget_->LoadDefaultScene(); qtOsgViewWidget_->LoadDefaultScene();
@ -335,6 +336,97 @@ void MainWindow::AddDockArea(const QString& strArea) {
resizeDocks(listAdd, listSpliter, orient); resizeDocks(listAdd, listSpliter, orient);
} }
void MainWindow::InitChartLayout()
{
QString strChart = RecourceHelper::Get().GetBasePath() + "/workspace/Chart.xml";
m_mgrChart.Load(strChart);
QVariantList varList = m_mgrChart.GetChartWgt();
for (int nI = 0; nI < varList.size(); nI++)
{
QVariantMap mapWgt = varList.at(nI).toMap();
QString strWgt = mapWgt.begin().key();
QVariantList listChart = mapWgt.begin().value().toList();
QMainWindow* mainWindow_ = new QMainWindow;
connect(mainWindow_, &QMainWindow::tabifiedDockWidgetActivated, this, &MainWindow::OnTabifiedDockWidgetActivated);
int nCount = tabWidget_->count();
tabWidget_->insertTab(nCount, mainWindow_, strWgt);
QVariantMap varRows;
for (int nJ = 0; nJ < listChart.size(); nJ++)
{
QVariantMap mapChart = listChart.at(nJ).toMap();
int nRow = mapChart.value("row").toInt();
int nCol = mapChart.value("column").toInt();
QString strKey = QString::number(nRow) + "-" + QString::number(nCol);
varRows.insert(strKey, mapChart);
}
QDockWidget* lastRowDock = nullptr;
QDockWidget* lastColDock = nullptr;
int lastRow = -1;
int lastCol = -1;
for (QVariantMap::Iterator ite = varRows.begin(); ite != varRows.end(); ++ite)
{
QVariantMap mapChart = ite.value().toMap();
int nRow = mapChart.value("row").toInt();
int nCol = mapChart.value("column").toInt();
QString strName = mapChart.value("Name").toString();
QString xTitle = mapChart.value("xTitle").toString();
QString yTitle = mapChart.value("yTitle").toString();
float xMin = mapChart.value("xMin").toFloat();
float xMax = mapChart.value("xMax").toFloat();
int xCount = mapChart.value("xCount").toInt();
float yMin = mapChart.value("yMin").toFloat();
float yMax = mapChart.value("yMax").toFloat();
DockWidget* pDock = new DockWidget(strName, 0);
fitCurveDlg_ = new FitCurveDialog(1);
fitCurveDlg_->AttachDock(pDock);
fitCurveDlg_->updateTitle(xTitle, yTitle);
fitCurveDlg_->updateMinMaxX(xMin, xMax, xCount);
fitCurveDlg_->updateMinMaxY(yMin, yMax);
mainWindow_->addDockWidget(Qt::LeftDockWidgetArea, pDock);
if (lastRow > -1)
{
if (lastRow == nRow)
{
if (lastCol > -1)
{
if (lastCol != nCol)
{
mainWindow_->splitDockWidget(lastColDock, pDock, Qt::Horizontal);
}
lastColDock = pDock;
}
else
{
lastColDock = pDock;
}
}
else
{
//mainWindow_->splitDockWidget(lastRowDock, pDock, Qt::Vertical);
lastRowDock = pDock;
}
}
else
{
lastRowDock = pDock;
lastColDock = pDock;
}
lastRow = nRow;
lastCol = nCol;
}
}
}
void MainWindow::OnTabifiedDockWidgetActivated(QDockWidget* dockWidget) { void MainWindow::OnTabifiedDockWidgetActivated(QDockWidget* dockWidget) {
//if (dockWidget) { //if (dockWidget) {
// QMainWindow* mainWindow = qobject_cast<QMainWindow*>(dockWidget->parentWidget()); // QMainWindow* mainWindow = qobject_cast<QMainWindow*>(dockWidget->parentWidget());

View File

@ -4,6 +4,8 @@
#include <qdockwidget.h> #include <qdockwidget.h>
#include <QMap> #include <QMap>
#include "chartPlot/ChartXMLMgr.h"
namespace Ui { namespace Ui {
class MainWindow; class MainWindow;
} }
@ -47,6 +49,8 @@ private:
void InitDockLayout(); void InitDockLayout();
void AddDockArea(const QString& strArea); void AddDockArea(const QString& strArea);
void InitChartLayout();
protected: protected:
void OnTabifiedDockWidgetActivated(QDockWidget* dockWidget); void OnTabifiedDockWidgetActivated(QDockWidget* dockWidget);
@ -70,4 +74,5 @@ private:
QMap<QString, QDockWidget*> m_mapDockWidget; QMap<QString, QDockWidget*> m_mapDockWidget;
ChartXMLMgr m_mgrChart;
}; };

View File

@ -681,6 +681,41 @@ void FitCurveDialog::InitReportFile(const QString& strFile, int iBatchCount)
} }
} }
void FitCurveDialog::updateTitle(const QString & xTitle, const QString & yTitle)
{
if (m_pAxisX)
{
m_pAxisX->setTitleText(xTitle);
}
if (m_pAxisY)
{
m_pAxisY->setTitleText(yTitle);
}
}
void FitCurveDialog::updateMinMaxX(float min, float max, int count)
{
m_iXMin = min;
m_iXMax = max;
QList<QAbstractAxis*> axesX;
axesX = curveChart->axes(Qt::Horizontal);
QValueAxis* curAxisX = (QValueAxis*)axesX[0];
curAxisX->setRange(m_iXMin, m_iXMax);
curAxisX->setTickCount(count);
}
void FitCurveDialog::updateMinMaxY(float min, float max)
{
m_iYMin = min;
m_iYMax = max;
QList<QAbstractAxis*> axesY;
axesY = curveChart->axes(Qt::Vertical);
QValueAxis* curAxisY = (QValueAxis*)axesY[0];
curAxisY->setRange(m_iYMin, m_iYMax);
}
bool 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())

View File

@ -28,6 +28,10 @@ public:
void InitWaveFile(const QString& strFile, int iBatchCount = 50); void InitWaveFile(const QString& strFile, int iBatchCount = 50);
void InitReportFile(const QString& strFile, int iBatchCount = 50); void InitReportFile(const QString& strFile, int iBatchCount = 50);
void updateTitle(const QString& xTitle, const QString& yTitle);
void updateMinMaxX(float min, float max, int count);
void updateMinMaxY(float min, float max);
protected: protected:
bool 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);
bool 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);