#include "SelectDatatDialog.h" #include #include #include #include #include #include "Curve2DKeySelcetBar.h" namespace pst { SelectDatatDialog::SelectDatatDialog(QWidget* parent) : ElaWidget(parent) , m_variableAxisValue{ nullptr } , m_keySelectBarList{} { setWindowTitle("数据选择"); setWindowIcon(QIcon(":/include/Image/Moon.jpg")); this->setIsFixedSize(true); setContentsMargins(0, 0, 0, 0); this->setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); setWindowModality(Qt::ApplicationModal); setWindowButtonFlags(ElaAppBarType::CloseButtonHint); } void SelectDatatDialog::setDialogTitle(const QString& title) { setWindowTitle(title); } QString SelectDatatDialog::getDialogTitle() const { return windowTitle(); } void SelectDatatDialog::setDataList( const QList>>& dataList) { m_dataList = dataList; } QList>> SelectDatatDialog::getDataList() const { return m_dataList; } void SelectDatatDialog::updateUI() { auto _page1Layout = new QVBoxLayout(this); // 变量区域 auto variableArea = new ElaScrollArea(this); auto variableAreaLayout = new QHBoxLayout(variableArea); ElaText* listText = new ElaText("变量", this); //listText->setTe xtPixelSize(12); m_variableAxisValue = new ElaComboBox(this); variableAreaLayout->addWidget(listText); variableAreaLayout->addWidget(m_variableAxisValue); _page1Layout->addWidget(variableArea); QWidget* _otherKeyWidget = new QWidget(this); //otherKey->setMaximumWidth(_contentWidth); _otherKeyWidget->setStyleSheet("background:transparent;"); ElaScrollArea* otherKeyArea = new ElaScrollArea(this); otherKeyArea->setWidget(_otherKeyWidget); otherKeyArea->setWidgetResizable(true); //otherKeyArea->setFixedHeight(100); otherKeyArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); otherKeyArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); auto otherKeyAreaAreaLayout = new QVBoxLayout(_otherKeyWidget); for (const auto& i : m_dataList) { // 变量区 m_variableAxisValue->addItem(i.first); // 其他值区域 auto cur = new Curve2DKeySelcetBar(this); cur->setData(i.first, i.second); otherKeyAreaAreaLayout->addWidget(cur); m_keySelectBarList.push_back(cur); } otherKeyAreaAreaLayout->addStretch(); _page1Layout->addWidget(otherKeyArea); /// 步骤很重要,先设置m_variableAxisValue的值,再连信号,再设置currentIndex connect(m_variableAxisValue, QOverload::of(&ElaComboBox::currentIndexChanged), this, &SelectDatatDialog::slot_variableIndexChanged); if (!m_dataList.empty()) { m_variableAxisValue->setCurrentIndex(0); m_keySelectBarList.at(0)->hide(); } _page1Layout->addStretch(); auto _cancelOKLayout = new QHBoxLayout(); ElaPushButton* cancelButton = new ElaPushButton(this); ElaPushButton* okButton = new ElaPushButton(this); cancelButton->setText("取消"); okButton->setText("确定"); _cancelOKLayout->addStretch(); _cancelOKLayout->addWidget(cancelButton); _cancelOKLayout->addWidget(okButton); _page1Layout->addLayout(_cancelOKLayout); connect(cancelButton, &ElaPushButton::clicked, this, [this]() {this->close(); }); connect(okButton, &ElaPushButton::clicked, this, &SelectDatatDialog::slot_sendChosenInfo); } void SelectDatatDialog::slot_variableIndexChanged(int index) { for (int i = 0; i < m_keySelectBarList.size(); ++i) { i == index ? m_keySelectBarList.at(i)->hide() : m_keySelectBarList.at(i)->show(); } } void pst::SelectDatatDialog::slot_sendChosenInfo() { auto variableIndex = m_variableAxisValue->currentIndex(); QList>> chosenkeyList; for (int i = 0; i < m_keySelectBarList.size(); ++i) { if (i == variableIndex) continue; auto indexs = m_keySelectBarList.at(i)->getSelectedIndex(); chosenkeyList.append(qMakePair(i, indexs)); } emit signal_sendSelectedInfo(variableIndex, chosenkeyList); this->close(); } }