#include "Graph2DSettings.h" #include #include #include #include "ElaText.h" #include "ElaPivot.h" #include "ElaTabWidget.h" #include "ElaScrollPageArea.h" #include "ElaCheckBox.h" #include "ElaComboBox.h" #include "ElaMessageButton.h" #include "ElaMultiSelectComboBox.h" #include "ElaPlainTextEdit.h" #include "ElaProgressBar.h" #include "ElaRadioButton.h" #include "ElaScrollPageArea.h" #include "ElaSlider.h" #include "ElaSpinBox.h" #include "ElaText.h" #include "ElaToggleButton.h" #include "ElaToggleSwitch.h" #include "ElaListView.h" #include "ElaScrollBar.h" #include "ElaTheme.h" #include "ElaLineEdit.h" #include "ElaScrollArea.h" #include "ElaDoubleSpinBox.h" #include namespace pst { Graph2DSettings::Graph2DSettings(QWidget* parent, Cure2DType type) : T_BasePage(parent) , m_variableValueIndex(-1) , page2RowCount(0) { //设置基本布局属性 setFixedWidth(300); setContentsMargins(0, 0, 0, 0); } Graph2DSettings::~Graph2DSettings() { } void Graph2DSettings::setCurveList(const QList& curveList) { } void Graph2DSettings::addCurveToList(QString curveName) { } void Graph2DSettings::clearCurveList() { } void Graph2DSettings::setCurrentFixedValueIndex(int index) { m_variableValueIndex = index; } int Graph2DSettings::getCurrentVariableValueIndex() const { return m_variableValueIndex; } void Graph2DSettings::updateUI() { _titleFontSize = 14; _contentWidth = 290; //添加选项卡UI 数据 显示 addTopTabPivotUI(); //添加曲线列表UI addCurveListUI(); //添加变量轴UI addVariableAxistUI(); setVariableValue(); //固定值UI addFiexedValueToUI(); setFixedValue(); //类别UI addCategaryToUI(); setCategoryData(); ElaCheckBox* _checkBox1 = new ElaCheckBox("归一化", this); ElaCheckBox* _checkBox2 = new ElaCheckBox("dB", this); ElaScrollPageArea* _dateOperationArea = new ElaScrollPageArea(this); _dateOperationArea->setMaximumWidth(_contentWidth); _dateOperationArea->setFixedHeight(60); QGridLayout* _categoryLayoutH = new QGridLayout(_dateOperationArea); _categoryLayoutH->addWidget(_checkBox1, 0, 0); _categoryLayoutH->addWidget(_checkBox2, 0, 1); _page1Layout->addWidget(_dateOperationArea); _page1Layout->addStretch(); _page1Layout->setContentsMargins(10, 10, 10, 0); //---------- 第二页内容 //QWidget* page2CentralWidget = new QWidget(this); _page2Layout = new QGridLayout(m_page2CentralWidget); addXAxisSettingUI(); addYAxisSettingUI(); /* _page2Layout->addWidget(_titleVText, 1, 0); _page2Layout->addWidget(_titleVEdit, 1, 1);*/ QSpacerItem* horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Expanding); _page2Layout->addItem(horizontalSpacer, ++page2RowCount, 0); _page2Layout->setContentsMargins(10, 10, 10, 0); addCentralWidget(m_tabWidget, true, true, 0); connect(m_variableAxisValue, QOverload::of(&ElaComboBox::currentIndexChanged), this, &Graph2DSettings::slot_variableAxisChanged); } void Graph2DSettings::setCategaryData(const QList& categaryList) { m_categoryValueList = categaryList; } QList Graph2DSettings::getCategaryData() const { return m_categoryValueList; } QString Graph2DSettings::getFontFamilyString(const QString& font) { if (font == "宋体") { return "SimSun"; } else if (font == "微软雅黑") { return "Microsoft YaHei"; } return QString(); } void Graph2DSettings::addTopTabPivotUI() { //选项卡切换标题 ElaPivot* _pivot = new ElaPivot(this); _pivot->setPivotSpacing(12); _pivot->setMarkWidth(40); _pivot->appendPivot("数据"); _pivot->appendPivot("显示"); _pivot->setCurrentIndex(0); _pivot->setTextPixelSize(16); setCustomWidget(_pivot); //---------- 第一页内容 m_page1CentralWidget = new QWidget(this); m_page2CentralWidget = new QWidget(this); //选项卡视图 m_tabWidget = new ElaTabWidget(this); m_tabWidget->tabBar()->hide(); m_tabWidget->addTab(m_page1CentralWidget, ""); m_tabWidget->addTab(m_page2CentralWidget, ""); connect(_pivot, &ElaPivot::pivotClicked, this, [=](int index) { m_tabWidget->setCurrentIndex(index); }); _page1Layout = new QVBoxLayout(m_page1CentralWidget); } void Graph2DSettings::addCurveListUI() { ElaText* listText = new ElaText("曲线", this); listText->setTextPixelSize(_titleFontSize); m_curveNameListView = new ElaListView(this); m_curveNameListView->setFixedHeight(150); QStandardItemModel* model = new QStandardItemModel(m_curveNameListView); for (size_t i = 0; i < 10; i++) { model->appendRow(new QStandardItem(QString("曲线%1").arg(i))); } m_curveNameListView->setModel(model); ElaScrollBar* listViewFloatScrollBar = new ElaScrollBar(m_curveNameListView->verticalScrollBar(), m_curveNameListView); listViewFloatScrollBar->setIsAnimation(true); QVBoxLayout* listLayout = new QVBoxLayout(); listLayout->addWidget(m_curveNameListView); _page1Layout->addWidget(listText); _page1Layout->addLayout(listLayout); } void Graph2DSettings::addVariableAxistUI() { //变量轴 ElaText* variableAxisText = new ElaText("变量轴", this); variableAxisText->setTextPixelSize(_titleFontSize); m_variableAxisValue = new ElaComboBox(this); _page1Layout->addWidget(variableAxisText); _page1Layout->addWidget(m_variableAxisValue); } void Graph2DSettings::setFixedValue() { for (int num = 0, index = 0; num < m_FixedVariableValueList.size(); num++) { if (num == m_variableValueIndex) { continue; } const auto& i = m_FixedVariableValueList[num]; ElaText* _phiText2 = new ElaText(i.first, this); _phiText2->setTextPixelSize(_titleFontSize); ElaComboBox* _phiComboBox2 = new ElaComboBox(this); QStringList _phiComboList2{ i.second }; _phiComboBox2->addItems(_phiComboList2); _fixedValueLayoutH->addWidget(_phiText2, index, 0); _fixedValueLayoutH->addWidget(_phiComboBox2, index++, 1); m_currentFixedValueWidgets.append({ _phiText2, _phiComboBox2 }); } } void Graph2DSettings::setVariableValue() { for (auto i : m_FixedVariableValueList) { m_variableAxisValue->addItem(i.first); } m_variableAxisValue->setCurrentIndex(m_variableValueIndex); } void Graph2DSettings::addFiexedValueToUI() { //固定值 ElaText* _fixedValueText = new ElaText("固定值", this); _fixedValueText->setTextPixelSize(_titleFontSize); //固定值布局 QWidget* _fixedValueArea = new QWidget(this); _fixedValueArea->setMaximumWidth(_contentWidth); _fixedValueArea->setStyleSheet("background:transparent;"); _fixedValueLayoutH = new QGridLayout(_fixedValueArea); ElaScrollArea* _elaScrollArea = new ElaScrollArea(this); _elaScrollArea->setWidget(_fixedValueArea); _elaScrollArea->setWidgetResizable(true); _elaScrollArea->setFixedHeight(100); _elaScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); _elaScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); _page1Layout->addWidget(_fixedValueText); _page1Layout->addWidget(_elaScrollArea); } void Graph2DSettings::addCategaryToUI() { //类别 ElaText* _categoryText = new ElaText("类别", this); _categoryText->setTextPixelSize(_titleFontSize); //固定值布局 m_categryValue = new ElaComboBox(this); _page1Layout->addWidget(_categoryText); _page1Layout->addWidget(m_categryValue); } void Graph2DSettings::setCategoryData() { for (auto i : m_categoryValueList) { m_categryValue->addItem(i); } } void Graph2DSettings::addXAxisSettingUI() { ElaText* _axisX = new ElaText("横轴", this); _axisX->setTextPixelSize(_titleFontSize); //横轴标题 ElaText* _titleHTextX = new ElaText("横轴标题", this); _titleHTextX->setTextPixelSize(_titleFontSize); _titleHEditX = new ElaLineEdit(this); _titleHEditX->setText("x轴"); //字体 ElaText* _fontFamilyTextX = new ElaText("字体", this); _fontFamilyTextX->setTextPixelSize(_titleFontSize); _fontFamilyComboBoxX = new ElaComboBox(this); QStringList _fontFamilyComboListX{ "宋体", "微软雅黑", }; _fontFamilyComboBoxX->addItems(_fontFamilyComboListX); //字号 ElaText* _fontSizeTextX = new ElaText("字号", this); _fontSizeTextX->setTextPixelSize(_titleFontSize); _fontSizeInputX = new ElaSpinBox(this); //最小值 ElaText* _minTextX = new ElaText("起点", this); _minTextX->setTextPixelSize(_titleFontSize); _minInputX = new ElaDoubleSpinBox(this); _minInputX->setMinimum(-100000.0); //最大值 ElaText* _maxTextX = new ElaText("终点", this); _maxTextX->setTextPixelSize(_titleFontSize); _maxInputX = new ElaDoubleSpinBox(this); _maxInputX->setMinimum(-100000.0); //步长 ElaText* _stepTextX = new ElaText("步长", this); _stepTextX->setTextPixelSize(_titleFontSize); _setpInputX = new ElaDoubleSpinBox(this); _setpInputX->setMinimum(0.00001); //页面2的布局 _page2Layout->addWidget(_axisX, page2RowCount, 0); _page2Layout->addWidget(_titleHTextX, ++page2RowCount, 0); _page2Layout->addWidget(_titleHEditX, page2RowCount, 1); _page2Layout->addWidget(_fontFamilyTextX, ++page2RowCount, 0); _page2Layout->addWidget(_fontFamilyComboBoxX, page2RowCount, 1); _page2Layout->addWidget(_fontSizeTextX, ++page2RowCount, 0); _page2Layout->addWidget(_fontSizeInputX, page2RowCount, 1); _page2Layout->addWidget(_minTextX, ++page2RowCount, 0); _page2Layout->addWidget(_minInputX, page2RowCount, 1); _page2Layout->addWidget(_maxTextX, page2RowCount, 2); _page2Layout->addWidget(_maxInputX, page2RowCount, 3); _page2Layout->addWidget(_stepTextX, ++page2RowCount, 0); _page2Layout->addWidget(_setpInputX, page2RowCount, 1); connect(_titleHEditX, &ElaLineEdit::textChanged, this, [this]() {emit signal_XAxisTitleNameChanged(_titleHEditX->text()); }); connect(_fontFamilyComboBoxX, QOverload::of(&ElaComboBox::currentIndexChanged), this, [this]() {emit signal_XAxisTitleFontFamilyChanged( getFontFamilyString(_fontFamilyComboBoxX->currentText())); }); connect(_fontSizeInputX, QOverload::of(&ElaSpinBox::valueChanged), this, [this]() {emit signal_XAxisTitleFontSizeChanged(_fontSizeInputX->value()); }); connect(_minInputX, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this]() {emit signal_XAxisMinValueChanged(_minInputX->value()); }); connect(_maxInputX, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this]() {emit signal_XAxisMaxValueChanged(_maxInputX->value()); }); connect(_setpInputX, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this] {emit signal_XAxisStepValueChanged(_setpInputX->value()); }); _setpInputX->setValue(5); _maxInputX->setValue(50); _fontSizeInputX->setValue(12); _minInputX->setValue(10); _fontFamilyComboBoxX->setCurrentIndex(0); } void Graph2DSettings::addYAxisSettingUI() { ElaText* _axisY = new ElaText("纵轴", this); _axisY->setTextPixelSize(_titleFontSize); //横轴标题 ElaText* _titleHTextY = new ElaText("纵轴标题", this); _titleHTextY->setTextPixelSize(_titleFontSize); _titleHEditY = new ElaLineEdit(this); _titleHEditY->setText("y轴"); //字体 ElaText* _fontFamilyTextY = new ElaText("字体", this); _fontFamilyTextY->setTextPixelSize(_titleFontSize); _fontFamilyComboBoxY = new ElaComboBox(this); QStringList _fontFamilyComboListY{ "微软雅黑", "宋体", }; _fontFamilyComboBoxY->addItems(_fontFamilyComboListY); //字号 ElaText* _fontSizeTextY = new ElaText("字号", this); _fontSizeTextY->setTextPixelSize(_titleFontSize); _fontSizeInputY = new ElaSpinBox(this); //最小值 ElaText* _minTextY = new ElaText("起点", this); _minTextY->setTextPixelSize(_titleFontSize); _minInputY = new ElaDoubleSpinBox(this); _minInputY->setMinimum(-100000.0); //最大值 ElaText* _maxTextY = new ElaText("终点", this); _maxTextY->setTextPixelSize(_titleFontSize); _maxInputY = new ElaDoubleSpinBox(this); _maxInputY->setMinimum(-100000.0); //步长 ElaText* _stepTextY = new ElaText("步长", this); _stepTextY->setTextPixelSize(_titleFontSize); _setpInputY = new ElaDoubleSpinBox(this); _setpInputY->setMinimum(0.00001); //页面2的布局 _page2Layout->addWidget(_axisY, ++page2RowCount, 0); _page2Layout->addWidget(_titleHTextY, ++page2RowCount, 0); _page2Layout->addWidget(_titleHEditY, page2RowCount, 1); _page2Layout->addWidget(_fontFamilyTextY, ++page2RowCount, 0); _page2Layout->addWidget(_fontFamilyComboBoxY, page2RowCount, 1); _page2Layout->addWidget(_fontSizeTextY, ++page2RowCount, 0); _page2Layout->addWidget(_fontSizeInputY, page2RowCount, 1); _page2Layout->addWidget(_minTextY, ++page2RowCount, 0); _page2Layout->addWidget(_minInputY, page2RowCount, 1); _page2Layout->addWidget(_maxTextY, page2RowCount, 2); _page2Layout->addWidget(_maxInputY, page2RowCount, 3); _page2Layout->addWidget(_stepTextY, ++page2RowCount, 0); _page2Layout->addWidget(_setpInputY, page2RowCount, 1); connect(_titleHEditY, &ElaLineEdit::textChanged, this, [this]() {emit signal_YAxisTitleNameChanged(_titleHEditY->text()); }); connect(_fontFamilyComboBoxY, QOverload::of(&ElaComboBox::currentIndexChanged), this, [this]() {emit signal_YAxisTitleFontFamilyChanged( getFontFamilyString(_fontFamilyComboBoxY->currentText())); }); connect(_fontSizeInputY, QOverload::of(&ElaSpinBox::valueChanged), this, [this]() {emit signal_YAxisTitleFontSizeChanged(_fontSizeInputY->value()); }); connect(_minInputY, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this]() {emit signal_YAxisMinValueChanged(_minInputY->value()); }); connect(_maxInputY, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this]() {emit signal_YAxisMaxValueChanged(_maxInputY->value()); }); connect(_setpInputY, QOverload::of(&ElaDoubleSpinBox::valueChanged), this, [this] {emit signal_YAxisStepValueChanged(_setpInputY->value()); }); _setpInputY->setValue(5); _maxInputY->setValue(50); _minInputY->setValue(10); _fontSizeInputY->setValue(12); _fontFamilyComboBoxY->setCurrentIndex(0); } void Graph2DSettings::setFixedVariableValue( const QList>>& fixedValueList) { m_FixedVariableValueList = fixedValueList; } void Graph2DSettings::slot_variableAxisChanged(int index) { //清除原有数据 m_variableValueIndex = index; for (auto i : m_currentFixedValueWidgets) { _fixedValueLayoutH->removeWidget(i.first); _fixedValueLayoutH->removeWidget(i.second); delete i.first; i.first = nullptr; delete i.second; i.second = nullptr; } m_currentFixedValueWidgets.clear(); //添加新数据 setFixedValue(); } }