|
@@ -0,0 +1,185 @@
|
|
|
+#include "MatterElementConfigWidget.h"
|
|
|
+#include "MatterElementItemDelegate.h"
|
|
|
+#include "ui_MatterElementConfigWidget.h"
|
|
|
+
|
|
|
+#include <QLineEdit>
|
|
|
+#include <QDebug>
|
|
|
+
|
|
|
+MatterElementConfigWidget::MatterElementConfigWidget(QWidget *parent)
|
|
|
+ : QWidget(parent), ui(new Ui::MatterElementConfigWidget)
|
|
|
+{
|
|
|
+ ui->setupUi(this);
|
|
|
+
|
|
|
+ initScaleDivisionTable();
|
|
|
+ initDomainTable();
|
|
|
+}
|
|
|
+
|
|
|
+MatterElementConfigWidget::~MatterElementConfigWidget()
|
|
|
+{
|
|
|
+ delete ui;
|
|
|
+}
|
|
|
+
|
|
|
+void MatterElementConfigWidget::initScaleDivisionTable()
|
|
|
+{
|
|
|
+ QTableView *t = ui->scaleDivisionTable;
|
|
|
+ t->setAlternatingRowColors(false);
|
|
|
+ t->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
|
|
+ t->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
|
+ t->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
|
+ t->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
|
|
|
+ t->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
+ t->verticalHeader()->hide();
|
|
|
+
|
|
|
+ m_scaleDivisionmodel = new QStandardItemModel;
|
|
|
+ t->setModel(m_scaleDivisionmodel);
|
|
|
+
|
|
|
+ m_scaleDivisionmodel->setRowCount(1);
|
|
|
+ m_scaleDivisionmodel->setColumnCount(7);
|
|
|
+
|
|
|
+ QStringList headers = { "定义", "很差", "较差", "一般", "较高", "很高", "相邻定义" };
|
|
|
+ m_scaleDivisionmodel->setHorizontalHeaderLabels(headers);
|
|
|
+
|
|
|
+ QStandardItem *s = nullptr;
|
|
|
+ MatterElementItemSpinDelegate *sd = new MatterElementItemSpinDelegate(t);
|
|
|
+
|
|
|
+ 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->setTextAlignment(Qt::AlignCenter);
|
|
|
+ }
|
|
|
+
|
|
|
+ m_scaleDivisionmodel->setItem(0, i, s);
|
|
|
+
|
|
|
+ if (i > 0 && i < headers.size() - 1) {
|
|
|
+ t->setItemDelegateForColumn(i, sd);
|
|
|
+ }
|
|
|
+ if (i == headers.size() - 1) {
|
|
|
+ t->setItemDelegateForColumn(i, new MatterElementItemInsideDelegate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static void clearTab(QTabWidget *tabWidget)
|
|
|
+{
|
|
|
+ while (tabWidget->count() > 0) {
|
|
|
+ auto widget = tabWidget->widget(0); // 获取当前页对应的widget
|
|
|
+ tabWidget->removeTab(0); // 从QTabWidget中删除当前页
|
|
|
+ widget->setParent(nullptr); // 从父控件中删除widget对象
|
|
|
+ widget->deleteLater(); // 删除widget对象
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void MatterElementConfigWidget::initDomainTable()
|
|
|
+{
|
|
|
+ const int level = 4;
|
|
|
+
|
|
|
+ ui->levelLabel->setText(QString::number(level));
|
|
|
+
|
|
|
+ QFormLayout *formLayout = new QFormLayout;
|
|
|
+ for (int l = 0; l < level; ++l) {
|
|
|
+ auto le = new QLineEdit(QString("E%1").arg(l + 1));
|
|
|
+ le->setMinimumHeight(30);
|
|
|
+ le->setMaximumWidth(80);
|
|
|
+ m_levelEdits << le;
|
|
|
+ formLayout->addRow(QString("%1级:").arg(l + 1), le);
|
|
|
+ }
|
|
|
+ auto levelSaveBtn = new QPushButton("保存");
|
|
|
+ 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 = { "一体化战场感知能力", "网络化指挥能力" };
|
|
|
+ QHash<QString, QStringList> indexs;
|
|
|
+ indexs.insert("一体化战场感知能力", { "信息获取", "信息传递", "信息处理" });
|
|
|
+ indexs.insert("网络化指挥能力", { "指挥机构效能", "指挥人员素质", "指挥系统可靠性" });
|
|
|
+
|
|
|
+ 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);
|
|
|
+ table->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
|
+ table->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
|
+ table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
|
|
|
+ table->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
+ table->verticalHeader()->hide();
|
|
|
+ table->horizontalHeader()->hide();
|
|
|
+ QStandardItemModel *tModel = new QStandardItemModel;
|
|
|
+ table->setModel(tModel);
|
|
|
+
|
|
|
+ int indexNumber = indexs[parentIndexs.at(pindex)].size();
|
|
|
+
|
|
|
+ tModel->setColumnCount(4 * domainLevels.size());
|
|
|
+ tModel->setRowCount(indexNumber);
|
|
|
+
|
|
|
+ for (int r = 0; r < domainLevels.size() + 1; ++r) {
|
|
|
+ QStandardItem *s = nullptr;
|
|
|
+ if (r < domainLevels.size()) {
|
|
|
+ s = new QStandardItem(QString("R%1").arg(r + 1));
|
|
|
+ } else {
|
|
|
+ s = new QStandardItem("Rp");
|
|
|
+ }
|
|
|
+
|
|
|
+ s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
+ s->setTextAlignment(Qt::AlignCenter);
|
|
|
+ if (r < domainLevels.size()) {
|
|
|
+ s->setToolTip(QString("经典域R%1").arg(r + 1));
|
|
|
+ } else {
|
|
|
+ s->setToolTip("节域p");
|
|
|
+ }
|
|
|
+
|
|
|
+ tModel->setItem(0, r * 4, s);
|
|
|
+ table->setSpan(0, r * 4, indexNumber, 1);
|
|
|
+
|
|
|
+ if (r < domainLevels.size()) {
|
|
|
+ s = new QStandardItem(domainLevels.at(r));
|
|
|
+ } else {
|
|
|
+ s = new QStandardItem("节域p");
|
|
|
+ }
|
|
|
+
|
|
|
+ s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
+ s->setTextAlignment(Qt::AlignCenter);
|
|
|
+ tModel->setItem(0, r * 4 + 1, s);
|
|
|
+ table->setSpan(0, r * 4 + 1, indexNumber, 1);
|
|
|
+
|
|
|
+ for (int k = 0; k < indexNumber; ++k) {
|
|
|
+ s = new QStandardItem(indexs[parentIndexs.at(pindex)].value(k));
|
|
|
+ s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
+ s->setTextAlignment(Qt::AlignCenter);
|
|
|
+ tModel->setItem(k, r * 4 + 2, s);
|
|
|
+
|
|
|
+ s = new QStandardItem();
|
|
|
+ s->setTextAlignment(Qt::AlignCenter);
|
|
|
+ tModel->setItem(k, r * 4 + 3, s);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ui->tabWidget->addTab(table, parentIndexs.at(pindex));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+QStringList MatterElementConfigWidget::getDomainLevels() const
|
|
|
+{
|
|
|
+ QStringList lvls;
|
|
|
+ for (int i = 0; i < m_levelEdits.size(); ++i) {
|
|
|
+ QString v = m_levelEdits.at(i)->text().trimmed();
|
|
|
+ if (v.isEmpty()) {
|
|
|
+ lvls << QString("E%1").arg(i + 1);
|
|
|
+ } else {
|
|
|
+ lvls << v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return lvls;
|
|
|
+}
|
|
|
+
|
|
|
+void MatterElementConfigWidget::onLevelSaveBtnClick() { }
|