ProjectStateWidget.cpp 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include "ProjectStateWidget.h"
  2. #include <QTableWidget>
  3. #include <QHeaderView>
  4. #include <QBoxLayout>
  5. #include <QDateTime>
  6. #include <QDebug>
  7. ProjectStateWidget::ProjectStateWidget(QWidget *parent) : QWidget(parent)
  8. {
  9. initialize();
  10. initLayout();
  11. refreshList();
  12. }
  13. void ProjectStateWidget::initialize()
  14. {
  15. m_vBoxLayout = new QVBoxLayout(this);
  16. m_projTableWidget = new QTableWidget(this);
  17. m_projTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  18. m_projTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  19. m_projTableWidget->setSelectionMode(QAbstractItemView::NoSelection);
  20. m_projTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  21. m_projTableWidget->verticalHeader()->setVisible(false);
  22. const QStringList headers = { "工程名", "工程类型", "专家信息", "评估状态" };
  23. m_projTableWidget->setColumnCount(headers.count());
  24. m_projTableWidget->setHorizontalHeaderLabels(headers);
  25. m_projTableWidget->setAlternatingRowColors(true);
  26. m_projTableWidget->setStyleSheet(
  27. "QTableWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(244, 244, "
  28. "255);alternate-background-color: rgb(255, 255, 255);}"
  29. // "QHeaderView::section{font-size: 14px;font:bold;font-family: 'Microsoft YaHei UI';}"
  30. "QHeaderView::section {"
  31. "background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,"
  32. "stop:0 #616161, stop: 0.5 #505050,"
  33. "stop: 0.6 #434343, stop:1 #656565);"
  34. "color: white;"
  35. "padding-left: 4px;"
  36. "border: 1px solid #6c6c6c;"
  37. "}");
  38. }
  39. void ProjectStateWidget::initLayout()
  40. {
  41. layout()->addWidget(m_projTableWidget);
  42. }
  43. void ProjectStateWidget::refreshList()
  44. {
  45. m_projTableWidget->clearContents();
  46. int projCount = 10;
  47. QStringList list = { "能力需求指标体系", "技术措施指标体系", "方案评估" };
  48. int expertCount = 3;
  49. int rowCount = projCount * list.count() * expertCount;
  50. m_projTableWidget->setRowCount(rowCount);
  51. for (int i = 0; i < projCount; i++) {
  52. int row = i * list.count() * expertCount;
  53. QTableWidgetItem *item = new QTableWidgetItem(QString("工程%1").arg(i + 1));
  54. item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  55. item->setTextAlignment(Qt::AlignCenter);
  56. m_projTableWidget->setItem(row, 0, item);
  57. m_projTableWidget->setSpan(row, 0, list.count() * expertCount, 1);
  58. for (int j = 0; j < list.count(); j++) {
  59. row = i * list.count() * expertCount + j * expertCount;
  60. QTableWidgetItem *item = new QTableWidgetItem(list[j]);
  61. item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  62. item->setTextAlignment(Qt::AlignCenter);
  63. m_projTableWidget->setItem(row, 1, item);
  64. m_projTableWidget->setSpan(row, 1, expertCount, 1);
  65. for (int k = 0; k < 3; k++) {
  66. row = i * list.count() * expertCount + j * expertCount + k;
  67. QTableWidgetItem *expItem = new QTableWidgetItem(QString("专家%1").arg(k + 1));
  68. expItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  69. expItem->setTextAlignment(Qt::AlignCenter);
  70. m_projTableWidget->setItem(row, 2, expItem);
  71. unsigned seed = QDateTime::currentDateTime().toTime_t() + pow(row, 4);
  72. srand(seed);
  73. bool loaded = (rand() % 4) == 0;
  74. QTableWidgetItem *loadItem = new QTableWidgetItem(loaded ? "已录入" : "未录入");
  75. loadItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  76. loadItem->setTextAlignment(Qt::AlignCenter);
  77. m_projTableWidget->setItem(row, 3, loadItem);
  78. }
  79. }
  80. }
  81. }