123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- #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() { }
|