From fd15c989d227f7059153d3c6f4a124b074dfba5e Mon Sep 17 00:00:00 2001 From: 15712809671 <136563253+15712809671@users.noreply.github.com> Date: Tue, 10 Dec 2024 23:36:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/src/translations/Dyt_zh_CN.ts | 149 ++++++--- Source/src/ui/Layout/AddParamSetting.cpp | 349 ++++++++++++++++++++++ Source/src/ui/Layout/AddParamSetting.h | 35 +++ Source/src/ui/Layout/AddParamSetting.ui | 117 ++++++++ Source/src/ui/MainWindow.cpp | 14 + Source/src/ui/MainWindow.h | 1 + Source/src/ui/Matlab/MatlabObject.cpp | 7 +- Source/src/ui/Matlab/MatlabObject.h | 2 +- Source/src/ui/chartPlot/SurfaceDialog.cpp | 26 +- Source/workspace/ParamSetting.ini | 26 ++ Source/workspace/UILayout.xml | 1 + 11 files changed, 669 insertions(+), 58 deletions(-) create mode 100644 Source/src/ui/Layout/AddParamSetting.cpp create mode 100644 Source/src/ui/Layout/AddParamSetting.h create mode 100644 Source/src/ui/Layout/AddParamSetting.ui create mode 100644 Source/workspace/ParamSetting.ini diff --git a/Source/src/translations/Dyt_zh_CN.ts b/Source/src/translations/Dyt_zh_CN.ts index 979e3c86..9c5df4d9 100644 --- a/Source/src/translations/Dyt_zh_CN.ts +++ b/Source/src/translations/Dyt_zh_CN.ts @@ -1,6 +1,72 @@ + + AddParamSetting + + + ParamSetting + + + + + AddParamSettingClass + + + AddParamSetting + + + + + 参数名称 + + + + + 描述 + + + + + 数据类型 + + + + + 最大值 + + + + + 最小值 + + + + + 小数点有效位 + + + + + 初始值 + + + + + 添加 + + + + + 删除 + + + + + 应用 + + + ChartPlotMenuClass @@ -322,52 +388,57 @@ - + model elements - + attribte - + Wave Curve - + Speed Curve - + 3D Curve - + Report Table - + Report - + Signal Indicator Lamp - + + ParamSetting + + + + name: 5year 0412 - + start: no start @@ -401,57 +472,57 @@ ModelTreeWidget - + Release Track - + Add boke Entity - + Add lsjhqt Entity - + Add nimizi Entity - + Add tkdlj Entity - + Add jiaofan Entity - + Add satellite Entity - + Track - + Add Mesh Component - + Add Path Component - + Delete @@ -690,34 +761,24 @@ QtConeWaveComponentManager - - + + ConeWaveComponent - + Height - + Radius - - Color1 - - - - - Color2 - - - - - Color3 + + Color @@ -822,28 +883,28 @@ QtDashedLineComponentManager - - + + DashedLineComponent - + Start - + End - + Radius - + Color @@ -1288,7 +1349,7 @@ - + 3D Curve diff --git a/Source/src/ui/Layout/AddParamSetting.cpp b/Source/src/ui/Layout/AddParamSetting.cpp new file mode 100644 index 00000000..e70bce6b --- /dev/null +++ b/Source/src/ui/Layout/AddParamSetting.cpp @@ -0,0 +1,349 @@ +#include "AddParamSetting.h" + +#include "../DockTitleBar.h" +#include "../DockWidget.h" + +#include +#include +#include + +#include +#include + +AddParamSetting::AddParamSetting(const QString& strDir, QWidget* parent) + : QWidget(parent) +{ + ui.setupUi(this); + + setWindowFlags(/*Qt::FramelessWindowHint | */Qt::Window); + + m_strDir = strDir; + + QHeaderView* horizontalHeader = ui.tableWidget->horizontalHeader(); + QColor headerColor = QColor(100, 100, 100); // ɫ + horizontalHeader->setStyleSheet(QString("QHeaderView::section {background-color: %1;}").arg(headerColor.name())); + horizontalHeader->setStretchLastSection(true); + + connect(ui.pushButton, &QPushButton::clicked, this, &AddParamSetting::slotButtonAdd); + connect(ui.pushButton_2, &QPushButton::clicked, this, &AddParamSetting::slotButtonRemove); + connect(ui.pushButton_3, &QPushButton::clicked, this, &AddParamSetting::slotButtonCommit); + + InitTable(); +} + +AddParamSetting::~AddParamSetting() +{ +} + +void AddParamSetting::AttachDock(DockWidget* dockWidget) +{ + if (nullptr == dockWidget) { + qDebug() << __FUNCTION__ << "dockwidget is nullptr"; + return; + } + + dockWidget->SetDockWidgetTitleBar(nullptr); + dockWidget->setWidget(this); + + DockTitleBar* dockTitleBar = new DockTitleBar; + + dockTitleBar->SetTitle(tr("ParamSetting")); + + dockWidget->SetDockWidgetTitleBar(dockTitleBar); +} + +void AddParamSetting::InitTable() +{ + QSettings sett(m_strDir, QSettings::IniFormat); + + QStringList listGroup = sett.childGroups(); + + for each (QString strGroup in listGroup) + { + sett.beginGroup(strGroup); + + QString strName = sett.value("Name").toString(); + QString strDes = sett.value("Des").toString(); + QString strType = sett.value("Type").toString(); + QString strMaxValue = sett.value("MaxValue").toString(); + QString strMinValue = sett.value("MinValue").toString(); + QString strDecimal = sett.value("Decimal").toString(); + QString strValue = sett.value("Value","0").toString(); + + QStringList values; + values << strName << strDes << strType << strMaxValue << strMinValue << strDecimal << strValue; + + InsertRow(values); + + sett.endGroup(); + } +} + +void AddParamSetting::InsertRow() +{ + int iRow = ui.tableWidget->rowCount(); + ui.tableWidget->insertRow(iRow); + + int iCol = 0; + // + { + QString strText = u8""; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + iCol++; + } + + // + { + QString strText = u8""; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + iCol++; + } + + // + { + QStringList listType; + listType << "String" << "Int" << "Float"; + + QComboBox* pCombox = new QComboBox; + pCombox->addItems(listType); + pCombox->setCurrentIndex(0); + pCombox->setProperty("Row", iRow); + + ui.tableWidget->setCellWidget(iRow, iCol, pCombox); + + connect(pCombox, &QComboBox::currentTextChanged, this, &AddParamSetting::slotSelectDataType); + iCol++; + } + + // ֵ + { + QDoubleSpinBox* pValue = new QDoubleSpinBox; + pValue->setDisabled(true); + pValue->setValue(100); + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + iCol++; + } + + // Сֵ + { + QDoubleSpinBox* pValue = new QDoubleSpinBox; + pValue->setDisabled(true); + pValue->setValue(1); + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + iCol++; + } + + // СЧλ + { + QSpinBox* pValue = new QSpinBox; + pValue->setDisabled(true); + pValue->setValue(0); + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + iCol++; + } + + // + { + QString strText = u8"ֵ"; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + } +} + +void AddParamSetting::InsertRow(QStringList values) +{ + int iRow = ui.tableWidget->rowCount(); + ui.tableWidget->insertRow(iRow); + + int iCol = 0; + // + { + QString strText = values[0]; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + iCol++; + } + + // + { + QString strText = values[1]; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + iCol++; + } + + // + { + QStringList listType; + listType << "String" << "Int" << "Float"; + + QComboBox* pCombox = new QComboBox; + pCombox->addItems(listType); + pCombox->setCurrentText(values[2]); + pCombox->setProperty("Row", iRow); + + ui.tableWidget->setCellWidget(iRow, iCol, pCombox); + + connect(pCombox, &QComboBox::currentTextChanged, this, &AddParamSetting::slotSelectDataType); + iCol++; + } + + // ֵ + { + QDoubleSpinBox* pValue = new QDoubleSpinBox; + + if (values[2] == "String") + { + pValue->setDisabled(true); + } + + pValue->setValue(values[3].toFloat()); + + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + iCol++; + } + + // Сֵ + { + QDoubleSpinBox* pValue = new QDoubleSpinBox; + + if (values[2] == "String") + { + pValue->setDisabled(true); + } + + pValue->setValue(values[4].toFloat()); + + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + + iCol++; + } + + // СЧλ + { + QSpinBox* pValue = new QSpinBox; + if (values[2] == "String") + { + pValue->setDisabled(true); + } + + pValue->setValue(values[5].toFloat()); + + ui.tableWidget->setCellWidget(iRow, iCol, pValue); + + iCol++; + } + + // ʼֵ + { + QString strText = values[6]; + ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText)); + } +} + +void AddParamSetting::RemoveRow() +{ + int iRow = ui.tableWidget->currentRow(); + if (iRow >= 0) + { + ui.tableWidget->removeRow(iRow); + + ResetTable(); + } +} + +void AddParamSetting::ResetTable() +{ + for (int iRow = 0; iRow < ui.tableWidget->rowCount(); iRow++) + { + QWidget* pCellWgt = ui.tableWidget->cellWidget(iRow, 2); + pCellWgt->setProperty("Row", iRow); + } +} + +void AddParamSetting::slotButtonAdd() +{ + InsertRow(); +} + +void AddParamSetting::slotButtonRemove() +{ + RemoveRow(); +} + +void AddParamSetting::slotButtonCommit() +{ + QSettings sett(m_strDir, QSettings::IniFormat); + sett.clear(); + sett.sync(); + + for (int iRow = 0; iRow < ui.tableWidget->rowCount(); iRow++) + { + QString strGroup = QString::number(iRow + 1); + QString strName = ui.tableWidget->item(iRow, 0)->text(); + QString strDes = ui.tableWidget->item(iRow, 1)->text(); + QString strType = ((QComboBox*)ui.tableWidget->cellWidget(iRow, 2))->currentText(); + + sett.beginGroup(strGroup); + + sett.setValue("Name", strName); + sett.setValue("Des", strDes); + sett.setValue("Type", strType); + + QDoubleSpinBox* pMaxValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 3); + sett.setValue("MaxValue", pMaxValue->value()); + + QDoubleSpinBox* pMinValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 4); + sett.setValue("MinValue", pMinValue->value()); + + QSpinBox* pDecimalValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 5); + sett.setValue("Decimal", pDecimalValue->value()); + + sett.setValue("Value", ui.tableWidget->item(iRow, 6)->text()); + + sett.endGroup(); + } +} + +void AddParamSetting::slotSelectDataType(const QString& strType) +{ + QObject* pSender = sender(); + int iRow = pSender->property("Row").toInt(); + if (iRow < ui.tableWidget->rowCount()) + { + if ("Int" == strType) + { + QDoubleSpinBox* pMaxValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 3); + pMaxValue->setDecimals(0); + pMaxValue->setDisabled(false); + + QDoubleSpinBox* pMinValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 4); + pMinValue->setDecimals(0); + pMinValue->setDisabled(false); + + QSpinBox* pDecimalValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 5); + pDecimalValue->setDisabled(true); + } + else if ("Float" == strType) + { + QDoubleSpinBox* pMaxValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 3); + pMaxValue->setDecimals(0); + pMaxValue->setDisabled(false); + + QDoubleSpinBox* pMinValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 4); + pMinValue->setDecimals(0); + pMinValue->setDisabled(false); + + QSpinBox* pDecimalValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 5); + pDecimalValue->setDisabled(false); + } + else + { + QDoubleSpinBox* pMaxValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 3); + pMaxValue->setDisabled(true); + + QDoubleSpinBox* pMinValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 4); + pMinValue->setDisabled(true); + + QSpinBox* pDecimalValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 5); + pDecimalValue->setDisabled(true); + } + } +} diff --git a/Source/src/ui/Layout/AddParamSetting.h b/Source/src/ui/Layout/AddParamSetting.h new file mode 100644 index 00000000..2eb55733 --- /dev/null +++ b/Source/src/ui/Layout/AddParamSetting.h @@ -0,0 +1,35 @@ +#pragma once + +#include +#include "ui_AddParamSetting.h" + +class AddParamSetting : public QWidget +{ + Q_OBJECT + +public: + AddParamSetting(const QString& strDir, QWidget *parent = nullptr); + ~AddParamSetting(); + + void AttachDock(class DockWidget* dockWidget); + +protected: + void InitTable(); + void InsertRow(); + void InsertRow(QStringList values); + void RemoveRow(); + + void ResetTable(); + +protected slots: + void slotSelectDataType(const QString& strType); + + void slotButtonAdd(); + void slotButtonRemove(); + void slotButtonCommit(); + +private: + Ui::AddParamSettingClass ui; + + QString m_strDir; +}; diff --git a/Source/src/ui/Layout/AddParamSetting.ui b/Source/src/ui/Layout/AddParamSetting.ui new file mode 100644 index 00000000..7206e230 --- /dev/null +++ b/Source/src/ui/Layout/AddParamSetting.ui @@ -0,0 +1,117 @@ + + + AddParamSettingClass + + + + 0 + 0 + 1250 + 598 + + + + AddParamSetting + + + + + + + 参数名称 + + + + + 描述 + + + + + 数据类型 + + + + + 最大值 + + + + + 最小值 + + + + + 小数点有效位 + + + + + 初始值 + + + + + + + + + + + 60 + 60 + + + + 添加 + + + + + + + + 60 + 60 + + + + 删除 + + + + + + + + 60 + 60 + + + + 应用 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + diff --git a/Source/src/ui/MainWindow.cpp b/Source/src/ui/MainWindow.cpp index e7625156..8d51f420 100644 --- a/Source/src/ui/MainWindow.cpp +++ b/Source/src/ui/MainWindow.cpp @@ -20,6 +20,7 @@ #include "chartPlot/SurfaceDialog.h" #include "Layout/LayoutSettingUI.h" #include "Layout/SignalIndicatorLampUI.h" +#include "Layout/AddParamSetting.h" #include "Table/targetlistwgt.h" #include "common/RecourceHelper.h" @@ -29,6 +30,8 @@ #include "../workspace/Timestep.h" #include "../workspace/LampStatus.h" +#include "Matlab/MatlabObject.h" + #include "ui_MainWindow.h" MainWindow::MainWindow(QWidget* parent) @@ -179,11 +182,22 @@ void MainWindow::InitUI() { m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock); + const QString iniPath = RecourceHelper::Get().GetBasePath() + "/workspace/ParamSetting.ini"; + DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0); + addParamDlg_ = new AddParamSetting(iniPath); + addParamDlg_->AttachDock(addParamSettingDock); + m_mapDockWidget.insert("ParamSetting", addParamSettingDock); ui->discript->setText(tr("name: 5year 0412")); ui->status->setText(tr("start: no start")); InitDockLayout(); + + if (0) + { + MatlabObject* mtlb = new MatlabObject; + mtlb->RunMatlabFile("D:\\DYT\\TestGUI\\TestGUI\\LDPlatformTest.m"); + } } void MainWindow::InitDockLayout() diff --git a/Source/src/ui/MainWindow.h b/Source/src/ui/MainWindow.h index a0ef9d05..9c093330 100644 --- a/Source/src/ui/MainWindow.h +++ b/Source/src/ui/MainWindow.h @@ -62,6 +62,7 @@ private: class TargetListWgt* targetUITable_{ nullptr }; class QTabWidget* tabWidget_{ nullptr }; class SignalIndicatorLampUI* signalIndicatorLampUI_{ nullptr }; + class AddParamSetting* addParamDlg_{ nullptr }; QMap m_mapDockWidget; diff --git a/Source/src/ui/Matlab/MatlabObject.cpp b/Source/src/ui/Matlab/MatlabObject.cpp index 220cc9b2..98bc715b 100644 --- a/Source/src/ui/Matlab/MatlabObject.cpp +++ b/Source/src/ui/Matlab/MatlabObject.cpp @@ -28,8 +28,11 @@ void MatlabObject::RunMatlabFile(const QString& strFile) std::u16string utf16_str = string2u16string(strRun); // MATLAB Engine std::unique_ptr matlabPtr = startMATLAB(); - // Mļ - matlabPtr->eval(utf16_str); + if (matlabPtr) + { + // Mļ + matlabPtr->eval(utf16_str); + } } std::u16string MatlabObject::string2u16string(std::string& str) diff --git a/Source/src/ui/Matlab/MatlabObject.h b/Source/src/ui/Matlab/MatlabObject.h index f93faa0b..a9973e1b 100644 --- a/Source/src/ui/Matlab/MatlabObject.h +++ b/Source/src/ui/Matlab/MatlabObject.h @@ -7,7 +7,7 @@ class MatlabObject : public QObject Q_OBJECT public: - MatlabObject(QObject *parent); + MatlabObject(QObject *parent=nullptr); ~MatlabObject(); void RunMatlabFile(const QString& strFile); diff --git a/Source/src/ui/chartPlot/SurfaceDialog.cpp b/Source/src/ui/chartPlot/SurfaceDialog.cpp index 3cd04c2d..3b782ac9 100644 --- a/Source/src/ui/chartPlot/SurfaceDialog.cpp +++ b/Source/src/ui/chartPlot/SurfaceDialog.cpp @@ -6,6 +6,7 @@ #include #include #include +#include SurfaceDialog::SurfaceDialog(QWidget *parent) : QWidget(parent) @@ -126,7 +127,7 @@ void SurfaceDialog::slotAddSeries(QVariant varSeriesData) m_iMaxZ = fZ; } - *dataRow << QVector3D(fX, fZ, fY); + *dataRow << QVector3D(fX, fY, fZ); } *data << dataRow; @@ -139,9 +140,6 @@ void SurfaceDialog::slotAddSeries(QVariant varSeriesData) m_p3DYAxis->setRange(m_iMinZ, m_iMaxZ); m_p3DZAxis->setRange(m_iMinY, m_iMaxY); - //m_p3DZAxis->setRange(m_iMinZ-1, m_iMaxZ+1); - //m_p3DYAxis->setRange(m_iMinY-1, m_iMaxY+1); - // ɫʽ m_pSeries->setBaseColor(color); m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform); @@ -221,6 +219,8 @@ void SurfaceDialog::slotUpdateTime(double dTime) m_p3DZAxis->setTitle("z"); m_p3DZAxis->setTitleVisible(true); + m_pSeries->dataProxy()->resetArray(nullptr); + QSurfaceDataArray* data = new QSurfaceDataArray; m_iMinX = 0; m_iMaxX = 0; @@ -242,7 +242,7 @@ void SurfaceDialog::slotUpdateTime(double dTime) for (int j = 0; j < rowData.size(); j++) { - float fZ = rowData[j]; + float fZ = abs(rowData[j]); if (m_iMinZ > fZ) { @@ -254,7 +254,7 @@ void SurfaceDialog::slotUpdateTime(double dTime) m_iMaxZ = fZ; } - *dataRow << QVector3D(i+1, j+1, fZ); + *dataRow << QVector3D(i+1, fZ, j+1); } *data << dataRow; @@ -263,11 +263,12 @@ void SurfaceDialog::slotUpdateTime(double dTime) m_pSeries->dataProxy()->resetArray(data); m_p3DXAxis->setRange(m_iMinX, m_iMaxX); - m_p3DZAxis->setRange(m_iMinZ, m_iMaxZ); - m_p3DYAxis->setRange(m_iMinY, m_iMaxY); + m_p3DYAxis->setRange(m_iMinZ, m_iMaxZ); + m_p3DZAxis->setRange(m_iMinY, m_iMaxY); - //m_p3DZAxis->setRange(m_iMinZ-1, m_iMaxZ+1); - //m_p3DYAxis->setRange(m_iMinY-1, m_iMaxY+1); + + m_Surface.setHorizontalAspectRatio(2.1); + m_Surface.setShadowQuality(QAbstract3DGraph::ShadowQuality::ShadowQualityNone); } void SurfaceDialog::InitSurface() @@ -290,7 +291,7 @@ void SurfaceDialog::InitSurface() m_Surface.setAxisX(m_p3DXAxis); m_Surface.setAxisY(m_p3DYAxis); m_Surface.setAxisZ(m_p3DZAxis); - + m_pSeries = new QSurface3DSeries; m_pSeries->setDrawMode(QSurface3DSeries::DrawSurface); m_Surface.addSeries(m_pSeries); @@ -309,6 +310,9 @@ void SurfaceDialog::InitSurface() m_pSeries->setBaseColor(Qt::green); m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform); m_pSeries->setSingleHighlightColor(Qt::green); + + m_pSeries->setMeshSmooth(false); // Ƿƽ + m_pSeries->setFlatShadingEnabled(false); // ûƽɫ } void SurfaceDialog::InitScatter() diff --git a/Source/workspace/ParamSetting.ini b/Source/workspace/ParamSetting.ini new file mode 100644 index 00000000..99faf9ee --- /dev/null +++ b/Source/workspace/ParamSetting.ini @@ -0,0 +1,26 @@ +[1] +Name=111 +Des=111 +Type=String +MaxValue=0 +MinValue=0 +Decimal=0 +Value=\x963f\x8fbe + +[2] +Name=222 +Des=222 +Type=Int +MaxValue=100 +MinValue=2 +Decimal=0 +Value=59 + +[3] +Name=333 +Des=333 +Type=Float +MaxValue=11 +MinValue=5 +Decimal=3 +Value=3.65 diff --git a/Source/workspace/UILayout.xml b/Source/workspace/UILayout.xml index 1f810eb3..56fe68b8 100644 --- a/Source/workspace/UILayout.xml +++ b/Source/workspace/UILayout.xml @@ -19,6 +19,7 @@ +