#include "MatterElementConfigWidget.h" #include "MatterElementItemDelegate.h" #include "ui_MatterElementConfigWidget.h" #include #include 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 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() { }