MatterElementConfigWidget.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #include "MatterElementConfigWidget.h"
  2. #include "MatterElementItemDelegate.h"
  3. #include "ui_MatterElementConfigWidget.h"
  4. #include <QLineEdit>
  5. #include <QDebug>
  6. MatterElementConfigWidget::MatterElementConfigWidget(QWidget *parent)
  7. : QWidget(parent), ui(new Ui::MatterElementConfigWidget)
  8. {
  9. ui->setupUi(this);
  10. initScaleDivisionTable();
  11. initDomainTable();
  12. }
  13. MatterElementConfigWidget::~MatterElementConfigWidget()
  14. {
  15. delete ui;
  16. }
  17. void MatterElementConfigWidget::initScaleDivisionTable()
  18. {
  19. QTableView *t = ui->scaleDivisionTable;
  20. t->setAlternatingRowColors(false);
  21. t->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  22. t->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  23. t->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  24. t->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
  25. t->setSelectionMode(QAbstractItemView::SingleSelection);
  26. t->verticalHeader()->hide();
  27. m_scaleDivisionmodel = new QStandardItemModel;
  28. t->setModel(m_scaleDivisionmodel);
  29. m_scaleDivisionmodel->setRowCount(1);
  30. m_scaleDivisionmodel->setColumnCount(7);
  31. QStringList headers = { "定义", "很差", "较差", "一般", "较高", "很高", "相邻定义" };
  32. m_scaleDivisionmodel->setHorizontalHeaderLabels(headers);
  33. QStandardItem *s = nullptr;
  34. MatterElementItemSpinDelegate *sd = new MatterElementItemSpinDelegate(t);
  35. for (int i = 0; i < headers.size(); ++i) {
  36. if (i == 0) {
  37. s = new QStandardItem("标度");
  38. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  39. s->setTextAlignment(Qt::AlignCenter);
  40. } else {
  41. s = new QStandardItem();
  42. s->setTextAlignment(Qt::AlignCenter);
  43. }
  44. m_scaleDivisionmodel->setItem(0, i, s);
  45. if (i > 0 && i < headers.size() - 1) {
  46. t->setItemDelegateForColumn(i, sd);
  47. }
  48. if (i == headers.size() - 1) {
  49. t->setItemDelegateForColumn(i, new MatterElementItemInsideDelegate);
  50. }
  51. }
  52. }
  53. static void clearTab(QTabWidget *tabWidget)
  54. {
  55. while (tabWidget->count() > 0) {
  56. auto widget = tabWidget->widget(0); // 获取当前页对应的widget
  57. tabWidget->removeTab(0); // 从QTabWidget中删除当前页
  58. widget->setParent(nullptr); // 从父控件中删除widget对象
  59. widget->deleteLater(); // 删除widget对象
  60. }
  61. }
  62. void MatterElementConfigWidget::initDomainTable()
  63. {
  64. const int level = 4;
  65. ui->levelLabel->setText(QString::number(level));
  66. QFormLayout *formLayout = new QFormLayout;
  67. for (int l = 0; l < level; ++l) {
  68. auto le = new QLineEdit(QString("E%1").arg(l + 1));
  69. le->setMinimumHeight(30);
  70. le->setMaximumWidth(80);
  71. m_levelEdits << le;
  72. formLayout->addRow(QString("%1级:").arg(l + 1), le);
  73. }
  74. auto levelSaveBtn = new QPushButton("保存");
  75. levelSaveBtn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
  76. levelSaveBtn->setMinimumHeight(30);
  77. levelSaveBtn->setMaximumWidth(80);
  78. formLayout->addRow("", levelSaveBtn);
  79. ui->levelWidget->setLayout(formLayout);
  80. connect(levelSaveBtn, &QPushButton::clicked, this, &MatterElementConfigWidget::onLevelSaveBtnClick);
  81. QStringList parentIndexs = { "一体化战场感知能力", "网络化指挥能力" };
  82. QHash<QString, QStringList> indexs;
  83. indexs.insert("一体化战场感知能力", { "信息获取", "信息传递", "信息处理" });
  84. indexs.insert("网络化指挥能力", { "指挥机构效能", "指挥人员素质", "指挥系统可靠性" });
  85. QStringList domainLevels = getDomainLevels();
  86. for (int pindex = 0; pindex < parentIndexs.size(); ++pindex) {
  87. qDebug() << pindex << parentIndexs.size();
  88. QTableView *table = new QTableView;
  89. table->setAlternatingRowColors(false);
  90. table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  91. table->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  92. table->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  93. table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
  94. table->setSelectionMode(QAbstractItemView::SingleSelection);
  95. table->verticalHeader()->hide();
  96. table->horizontalHeader()->hide();
  97. QStandardItemModel *tModel = new QStandardItemModel;
  98. table->setModel(tModel);
  99. int indexNumber = indexs[parentIndexs.at(pindex)].size();
  100. tModel->setColumnCount(4 * domainLevels.size());
  101. tModel->setRowCount(indexNumber);
  102. for (int r = 0; r < domainLevels.size() + 1; ++r) {
  103. QStandardItem *s = nullptr;
  104. if (r < domainLevels.size()) {
  105. s = new QStandardItem(QString("R%1").arg(r + 1));
  106. } else {
  107. s = new QStandardItem("Rp");
  108. }
  109. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  110. s->setTextAlignment(Qt::AlignCenter);
  111. if (r < domainLevels.size()) {
  112. s->setToolTip(QString("经典域R%1").arg(r + 1));
  113. } else {
  114. s->setToolTip("节域p");
  115. }
  116. tModel->setItem(0, r * 4, s);
  117. table->setSpan(0, r * 4, indexNumber, 1);
  118. if (r < domainLevels.size()) {
  119. s = new QStandardItem(domainLevels.at(r));
  120. } else {
  121. s = new QStandardItem("节域p");
  122. }
  123. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  124. s->setTextAlignment(Qt::AlignCenter);
  125. tModel->setItem(0, r * 4 + 1, s);
  126. table->setSpan(0, r * 4 + 1, indexNumber, 1);
  127. for (int k = 0; k < indexNumber; ++k) {
  128. s = new QStandardItem(indexs[parentIndexs.at(pindex)].value(k));
  129. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  130. s->setTextAlignment(Qt::AlignCenter);
  131. tModel->setItem(k, r * 4 + 2, s);
  132. s = new QStandardItem();
  133. s->setTextAlignment(Qt::AlignCenter);
  134. tModel->setItem(k, r * 4 + 3, s);
  135. }
  136. }
  137. ui->tabWidget->addTab(table, parentIndexs.at(pindex));
  138. }
  139. }
  140. QStringList MatterElementConfigWidget::getDomainLevels() const
  141. {
  142. QStringList lvls;
  143. for (int i = 0; i < m_levelEdits.size(); ++i) {
  144. QString v = m_levelEdits.at(i)->text().trimmed();
  145. if (v.isEmpty()) {
  146. lvls << QString("E%1").arg(i + 1);
  147. } else {
  148. lvls << v;
  149. }
  150. }
  151. return lvls;
  152. }
  153. void MatterElementConfigWidget::onLevelSaveBtnClick() { }