|
@@ -3,10 +3,11 @@
|
|
|
#include "ui_MatterElementConfigWidget.h"
|
|
|
|
|
|
#include <QLineEdit>
|
|
|
-#include <QDebug>
|
|
|
+// #include <QDebug>
|
|
|
|
|
|
-MatterElementConfigWidget::MatterElementConfigWidget(QWidget *parent)
|
|
|
- : QWidget(parent), ui(new Ui::MatterElementConfigWidget)
|
|
|
+MatterElementConfigWidget::MatterElementConfigWidget(const QList<MEConfigItem> &configItems, int domainLevel,
|
|
|
+ QWidget *parent)
|
|
|
+ : QWidget(parent), ui(new Ui::MatterElementConfigWidget), m_allConfigItems(configItems), m_domainLevel(domainLevel)
|
|
|
{
|
|
|
ui->setupUi(this);
|
|
|
|
|
@@ -36,19 +37,19 @@ void MatterElementConfigWidget::initScaleDivisionTable()
|
|
|
m_scaleDivisionmodel->setRowCount(1);
|
|
|
m_scaleDivisionmodel->setColumnCount(7);
|
|
|
|
|
|
- QStringList headers = { "定义", "很差", "较差", "一般", "较高", "很高", "相邻定义" };
|
|
|
+ const QStringList headers = { "定义", "很差", "较差", "一般", "较高", "很高", "相邻定义" };
|
|
|
m_scaleDivisionmodel->setHorizontalHeaderLabels(headers);
|
|
|
|
|
|
QStandardItem *s = nullptr;
|
|
|
MatterElementItemSpinDelegate *sd = new MatterElementItemSpinDelegate(t);
|
|
|
-
|
|
|
+ const QStringList originValues = { "1.0", "3.0", "5.0", "7.0", "9.0", "[2.0, 4.0, 6.0, 8.0]" };
|
|
|
for (int i = 0; i < headers.size(); ++i) {
|
|
|
if (i == 0) {
|
|
|
s = new QStandardItem("标度");
|
|
|
s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
s->setTextAlignment(Qt::AlignCenter);
|
|
|
} else {
|
|
|
- s = new QStandardItem();
|
|
|
+ s = new QStandardItem(originValues.at(i - 1));
|
|
|
s->setTextAlignment(Qt::AlignCenter);
|
|
|
}
|
|
|
|
|
@@ -61,6 +62,8 @@ void MatterElementConfigWidget::initScaleDivisionTable()
|
|
|
t->setItemDelegateForColumn(i, new MatterElementItemInsideDelegate);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ connect(ui->updateScaleBtn, &QPushButton::clicked, this, &MatterElementConfigWidget::onScaleValueUpdate);
|
|
|
}
|
|
|
|
|
|
static void clearTab(QTabWidget *tabWidget)
|
|
@@ -73,14 +76,12 @@ static void clearTab(QTabWidget *tabWidget)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void MatterElementConfigWidget::initDomainTable()
|
|
|
+void MatterElementConfigWidget::initDomainLevelLayout()
|
|
|
{
|
|
|
- const int level = 4;
|
|
|
-
|
|
|
- ui->levelLabel->setText(QString::number(level));
|
|
|
+ ui->levelLabel->setText(QString::number(m_domainLevel));
|
|
|
|
|
|
QFormLayout *formLayout = new QFormLayout;
|
|
|
- for (int l = 0; l < level; ++l) {
|
|
|
+ for (int l = 0; l < m_domainLevel; ++l) {
|
|
|
auto le = new QLineEdit(QString("E%1").arg(l + 1));
|
|
|
le->setMinimumHeight(30);
|
|
|
le->setMaximumWidth(80);
|
|
@@ -88,22 +89,42 @@ void MatterElementConfigWidget::initDomainTable()
|
|
|
formLayout->addRow(QString("%1级:").arg(l + 1), le);
|
|
|
}
|
|
|
auto levelSaveBtn = new QPushButton("保存");
|
|
|
+ levelSaveBtn->setIcon(QIcon(":/qfluentwidgets/images/icons/Save_black.svg"));
|
|
|
levelSaveBtn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
|
|
levelSaveBtn->setMinimumHeight(30);
|
|
|
levelSaveBtn->setMaximumWidth(80);
|
|
|
formLayout->addRow("", levelSaveBtn);
|
|
|
ui->levelWidget->setLayout(formLayout);
|
|
|
connect(levelSaveBtn, &QPushButton::clicked, this, &MatterElementConfigWidget::onLevelSaveBtnClick);
|
|
|
+}
|
|
|
|
|
|
- QStringList parentIndexs = { "一体化战场感知能力", "网络化指挥能力" };
|
|
|
+void MatterElementConfigWidget::initDomainTable()
|
|
|
+{
|
|
|
+ initDomainLevelLayout();
|
|
|
+
|
|
|
+ QStringList parentIndexs;
|
|
|
QHash<QString, QStringList> indexs;
|
|
|
- indexs.insert("一体化战场感知能力", { "信息获取", "信息传递", "信息处理" });
|
|
|
- indexs.insert("网络化指挥能力", { "指挥机构效能", "指挥人员素质", "指挥系统可靠性" });
|
|
|
+
|
|
|
+ for (const auto &item : m_allConfigItems) {
|
|
|
+ parentIndexs << item.parentName;
|
|
|
+ indexs.insert(item.parentName, {});
|
|
|
+ for (const auto &child : item.childs) {
|
|
|
+ indexs[item.parentName] << child.name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ m_meRangeDelegate = new MatterElementItemRangeDelegate(this);
|
|
|
+
|
|
|
+ const QStringList rangeItems = { "很差", "较差", "一般", "较高", "很高",
|
|
|
+ "相邻较差", "相邻一般", "相邻较高", "相邻很高" };
|
|
|
+ QVector<double> rangeValues;
|
|
|
+ auto scaleValues = getScaleValues();
|
|
|
+ rangeValues << scaleValues.at(0) << scaleValues.at(1);
|
|
|
+ m_meRangeDelegate->setOriginItems(rangeItems, rangeValues);
|
|
|
|
|
|
QStringList domainLevels = getDomainLevels();
|
|
|
|
|
|
for (int pindex = 0; pindex < parentIndexs.size(); ++pindex) {
|
|
|
- qDebug() << pindex << parentIndexs.size();
|
|
|
QTableView *table = new QTableView;
|
|
|
table->setAlternatingRowColors(false);
|
|
|
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
|
@@ -112,8 +133,11 @@ void MatterElementConfigWidget::initDomainTable()
|
|
|
table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
|
|
|
table->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
table->verticalHeader()->hide();
|
|
|
+ table->verticalHeader()->setDefaultSectionSize(60);
|
|
|
table->horizontalHeader()->hide();
|
|
|
QStandardItemModel *tModel = new QStandardItemModel;
|
|
|
+ m_domainModels << tModel;
|
|
|
+
|
|
|
table->setModel(tModel);
|
|
|
|
|
|
int indexNumber = indexs[parentIndexs.at(pindex)].size();
|
|
@@ -138,6 +162,7 @@ void MatterElementConfigWidget::initDomainTable()
|
|
|
}
|
|
|
|
|
|
tModel->setItem(0, r * 4, s);
|
|
|
+ table->setColumnWidth(r * 4, 20);
|
|
|
table->setSpan(0, r * 4, indexNumber, 1);
|
|
|
|
|
|
if (r < domainLevels.size()) {
|
|
@@ -161,6 +186,8 @@ void MatterElementConfigWidget::initDomainTable()
|
|
|
s->setTextAlignment(Qt::AlignCenter);
|
|
|
tModel->setItem(k, r * 4 + 3, s);
|
|
|
}
|
|
|
+
|
|
|
+ table->setItemDelegateForColumn(r * 4 + 3, m_meRangeDelegate);
|
|
|
}
|
|
|
|
|
|
ui->tabWidget->addTab(table, parentIndexs.at(pindex));
|
|
@@ -182,4 +209,47 @@ QStringList MatterElementConfigWidget::getDomainLevels() const
|
|
|
return lvls;
|
|
|
}
|
|
|
|
|
|
-void MatterElementConfigWidget::onLevelSaveBtnClick() { }
|
|
|
+QVector<QVector<double>> MatterElementConfigWidget::getScaleValues() const
|
|
|
+{
|
|
|
+ QVector<QVector<double>> newValues(2);
|
|
|
+
|
|
|
+ for (int c = 1; c < m_scaleDivisionmodel->columnCount() - 1; ++c) {
|
|
|
+ newValues[0] << m_scaleDivisionmodel->item(0, c)->text().toDouble();
|
|
|
+ }
|
|
|
+
|
|
|
+ QString value = m_scaleDivisionmodel->item(0, m_scaleDivisionmodel->columnCount() - 1)->text();
|
|
|
+ QStringList tmp = value.mid(1, value.size() - 2).replace(" ", "").split(",");
|
|
|
+
|
|
|
+ for (const auto &var : tmp) {
|
|
|
+ newValues[1] << var.toDouble();
|
|
|
+ }
|
|
|
+
|
|
|
+ return newValues;
|
|
|
+}
|
|
|
+
|
|
|
+void MatterElementConfigWidget::onLevelSaveBtnClick()
|
|
|
+{
|
|
|
+ QStringList domainLevels = getDomainLevels();
|
|
|
+
|
|
|
+ for (auto model : m_domainModels) {
|
|
|
+ for (int c = 0; c < domainLevels.size(); ++c) {
|
|
|
+ model->item(0, c * 4 + 1)->setText(domainLevels.at(c));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void MatterElementConfigWidget::onScaleValueUpdate()
|
|
|
+{
|
|
|
+ ui->scaleDivisionTable->clearSelection();
|
|
|
+
|
|
|
+ QVector<double> rangeValues;
|
|
|
+ auto scaleValues = getScaleValues();
|
|
|
+ rangeValues << scaleValues.at(0) << scaleValues.at(1);
|
|
|
+
|
|
|
+ m_meRangeDelegate->updateOriginValues(rangeValues);
|
|
|
+}
|
|
|
+
|
|
|
+QList<MEConfigItem> MatterElementConfigWidget::getAllConfigItems() const
|
|
|
+{
|
|
|
+ return m_allConfigItems;
|
|
|
+}
|