ProjectListWidget.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #include "ProjectListWidget.h"
  2. #include <Widgets/LineEdit.h>
  3. #include <Widgets/Button.h>
  4. #include <QBoxLayout>
  5. #include <QListWidget>
  6. #include <QLabel>
  7. ProjectListWidget::ProjectListWidget(QWidget *parent) : QWidget(parent)
  8. {
  9. initialize();
  10. initLayout();
  11. connectSiganlsAndSlots();
  12. refreshList();
  13. }
  14. void ProjectListWidget::refreshList()
  15. {
  16. m_projListWidget->clear();
  17. for (int i = 1; i <= 100; i++) {
  18. QListWidgetItem *item = new QListWidgetItem;
  19. item->setSizeHint(QSize(200, 80));
  20. m_projListWidget->addItem(item);
  21. ProjectListItemWidget *w = new ProjectListItemWidget();
  22. w->setIndex(i);
  23. w->setName(QString("工程%1").arg(i));
  24. m_projListWidget->setItemWidget(item, w);
  25. }
  26. }
  27. void ProjectListWidget::initialize()
  28. {
  29. QPalette pal(palette());
  30. pal.setColor(QPalette::Background, QColor("#f3f3f3"));
  31. setAutoFillBackground(true);
  32. setPalette(pal);
  33. m_vBoxLayout = new QVBoxLayout(this);
  34. m_buttonLayout = new QHBoxLayout();
  35. m_searchLineEdit = new LineEdit(this);
  36. m_searchLineEdit->setIsClearButtonEnabled(true);
  37. m_searchLineEdit->setPlaceholderText("搜索工程");
  38. m_renameButton = new ToolButton(NEWFLICON(FluentIcon, EDIT), this);
  39. m_renameButton->setToolTip("修改工程名");
  40. m_newProjButton = new ToolButton(NEWFLICON(FluentIcon, ADD), this);
  41. m_newProjButton->setToolTip("新建工程");
  42. m_deleteButton = new ToolButton(NEWFLICON(FluentIcon, DELETE), this);
  43. m_deleteButton->setToolTip("删除工程");
  44. m_projListWidget = new QListWidget(this);
  45. m_projListWidget->setAlternatingRowColors(true);
  46. m_projListWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
  47. "255);alternate-background-color: rgb(244, 244, 255);}");
  48. setProjButtonsEnabled(false);
  49. }
  50. void ProjectListWidget::initLayout()
  51. {
  52. m_vBoxLayout->addLayout(m_buttonLayout);
  53. m_buttonLayout->addWidget(m_searchLineEdit);
  54. m_buttonLayout->addWidget(m_newProjButton);
  55. m_buttonLayout->addWidget(m_renameButton);
  56. m_buttonLayout->addWidget(m_deleteButton);
  57. m_vBoxLayout->addWidget(m_projListWidget);
  58. }
  59. void ProjectListWidget::connectSiganlsAndSlots() { }
  60. void ProjectListWidget::setProjButtonsEnabled(bool enabled)
  61. {
  62. m_renameButton->setEnabled(enabled);
  63. m_deleteButton->setEnabled(enabled);
  64. }
  65. ProjectListItemWidget::ProjectListItemWidget(QWidget *parent) : QWidget(parent)
  66. {
  67. initialize();
  68. initLayout();
  69. }
  70. void ProjectListItemWidget::initialize()
  71. {
  72. m_hBoxLayout = new QHBoxLayout(this);
  73. m_vBoxLayout = new QVBoxLayout();
  74. m_indexLabel = new QLabel(this);
  75. m_indexLabel->setFixedWidth(20);
  76. m_indexLabel->setObjectName("indexLabel");
  77. m_nameLabel = new QLabel(this);
  78. m_nameLabel->setObjectName("nameLabel");
  79. m_typeLabel1 = new QLabel(this);
  80. m_typeLabel1->setObjectName("typeLabel1");
  81. m_typeLabel1->setContentsMargins(10, 0, 0, 0);
  82. m_typeLabel2 = new QLabel(this);
  83. m_typeLabel2->setObjectName("typeLabel2");
  84. m_typeLabel2->setContentsMargins(10, 0, 0, 0);
  85. m_typeLabel1->setText("能力与技术重要度评估");
  86. m_typeLabel2->setText("技术方案评估");
  87. setStyleSheet("#indexLabel {font-size:14px}"
  88. "#nameLabel {color:#1196db; font-size:14px; font:bold}"
  89. "#typeLabel1 {color: gray;}"
  90. "#typeLabel2 {color: gray;}");
  91. }
  92. void ProjectListItemWidget::initLayout()
  93. {
  94. m_hBoxLayout->addWidget(m_indexLabel);
  95. m_hBoxLayout->addLayout(m_vBoxLayout);
  96. m_hBoxLayout->addStretch();
  97. m_vBoxLayout->addWidget(m_nameLabel);
  98. m_vBoxLayout->addWidget(m_typeLabel1);
  99. m_vBoxLayout->addWidget(m_typeLabel2);
  100. }
  101. void ProjectListItemWidget::setIndex(int index)
  102. {
  103. m_index = index;
  104. m_indexLabel->setText(QString::number(index));
  105. }
  106. int ProjectListItemWidget::index() const
  107. {
  108. return m_index;
  109. }
  110. void ProjectListItemWidget::setName(const QString name)
  111. {
  112. m_name = name;
  113. m_nameLabel->setText(name);
  114. }
  115. const QString ProjectListItemWidget::name() const
  116. {
  117. return m_name;
  118. }