135 lines
4.6 KiB
C++
135 lines
4.6 KiB
C++
|
|
#include "SelectDatatDialog.h"
|
|||
|
|
|
|||
|
|
#include <QIcon>
|
|||
|
|
#include <ElaText.h>
|
|||
|
|
#include <QVBoxLayout>
|
|||
|
|
#include <ElaComboBox.h>
|
|||
|
|
#include <ElaScrollArea.h>
|
|||
|
|
#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<QPair<QString, QList<double>>>& dataList)
|
|||
|
|
{
|
|||
|
|
m_dataList = dataList;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QList<QPair<QString, QList<double>>>
|
|||
|
|
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<int>::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<QPair<int, QList<int>>> 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();
|
|||
|
|
}
|
|||
|
|
}
|