ProjectStateWidget.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #include "ProjectStateWidget.h"
  2. #include "common/ProjectManager.h"
  3. #include <dbService/ClassSet.h>
  4. #include <QTableWidget>
  5. #include <QHeaderView>
  6. #include <QBoxLayout>
  7. #include <QDateTime>
  8. #include <math.h>
  9. #include <QDebug>
  10. ProjectStateWidget::ProjectStateWidget(QWidget *parent) : QWidget(parent)
  11. {
  12. initialize();
  13. initLayout();
  14. }
  15. void ProjectStateWidget::showProjects(QList<ProjectInfo *> proList)
  16. {
  17. m_projTableWidget->clearContents();
  18. m_projTableWidget->clearSpans();
  19. setRowCount(proList);
  20. int row = 0;
  21. for (int i = 0; i < proList.count(); i++) {
  22. QColor color = i % 2 ? QColor(238, 238, 255) : QColor(255, 255, 255);
  23. // 工程名,第0列
  24. ProjectInfo *proj = proList[i];
  25. QTableWidgetItem *item = new QTableWidgetItem(proj->projectName);
  26. setItem(row, 0, item, color);
  27. QList<ProjectManager::EvalType> typeList = ProjectManager::evalTypeList(*proj);
  28. if (typeList.count() > 1) {
  29. m_projTableWidget->setSpan(row, 0, typeList.count(), 1);
  30. }
  31. // 指标体系,第1列
  32. for (int j = 0; j < typeList.count(); j++) {
  33. ProjectManager::EvalType indexType = typeList[j];
  34. QString typeName = ProjectManager::nameOfEvalType(indexType);
  35. QTableWidgetItem *item = new QTableWidgetItem(typeName);
  36. setItem(row + j, 1, item, color);
  37. }
  38. row += typeList.count();
  39. }
  40. }
  41. void ProjectStateWidget::initialize()
  42. {
  43. m_vBoxLayout = new QVBoxLayout(this);
  44. m_projTableWidget = new QTableWidget(this);
  45. m_projTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  46. m_projTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  47. m_projTableWidget->setSelectionMode(QAbstractItemView::NoSelection);
  48. m_projTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  49. m_projTableWidget->verticalHeader()->setVisible(false);
  50. const QStringList headers = { "项目名", "项目类型" };
  51. m_projTableWidget->setColumnCount(headers.count());
  52. m_projTableWidget->setHorizontalHeaderLabels(headers);
  53. // m_projTableWidget->setAlternatingRowColors(true);
  54. m_projTableWidget->setStyleSheet(
  55. "QTableWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(244, 244, "
  56. "255);alternate-background-color: rgb(255, 255, 255);}"
  57. // "QTableWidget::item{border:1px outset red;}"
  58. // "QHeaderView::section{font-size: 14px;font:bold;font-family: 'Microsoft YaHei UI';}"
  59. "QHeaderView::section {"
  60. "background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,"
  61. "stop:0 #616161, stop: 0.5 #505050,"
  62. "stop: 0.6 #434343, stop:1 #656565);"
  63. "color: white;"
  64. "padding-left: 4px;"
  65. "border: 1px solid #6c6c6c;"
  66. "}");
  67. }
  68. void ProjectStateWidget::initLayout()
  69. {
  70. layout()->addWidget(m_projTableWidget);
  71. }
  72. void ProjectStateWidget::setRowCount(QList<ProjectInfo *> list)
  73. {
  74. int count = 0;
  75. for (ProjectInfo *proj : list) {
  76. count += ProjectManager::evalTypeList(*proj).count();
  77. }
  78. m_projTableWidget->setRowCount(count);
  79. }
  80. void ProjectStateWidget::setItem(int row, int column, QTableWidgetItem *item, QColor bgColor)
  81. {
  82. item->setBackgroundColor(bgColor);
  83. item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  84. item->setTextAlignment(Qt::AlignCenter);
  85. m_projTableWidget->setItem(row, column, item);
  86. m_projTableWidget->setRowHeight(row, 50);
  87. }