ExpertManageView.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "ExpertManageView.h"
  2. #include "QFDIcon.h"
  3. #include "MainWindow.h"
  4. #include "ExpertInfoWidget.h"
  5. #include "ExpertListWidget.h"
  6. #include <Widgets/Button.h>
  7. #include <Widgets/LineEdit.h>
  8. #include <DialogBox/Dialog.h>
  9. #include <QBoxLayout>
  10. #include <QLabel>
  11. #include <QDebug>
  12. ExpertManageView::ExpertManageView(QWidget *parent) : QWidget(parent) { }
  13. void ExpertManageView::showEvent(QShowEvent *event)
  14. {
  15. qDebug() << __FUNCTION__ << __LINE__;
  16. QWidget::showEvent(event);
  17. init();
  18. }
  19. void ExpertManageView::hideEvent(QHideEvent *event)
  20. {
  21. QWidget::hideEvent(event);
  22. }
  23. void ExpertManageView::init()
  24. {
  25. if (m_initilized == false) {
  26. initialize();
  27. initLayout();
  28. connectSignalsAndSlots();
  29. m_initilized = true;
  30. }
  31. }
  32. void ExpertManageView::initialize()
  33. {
  34. m_vBoxLayout = new QVBoxLayout(this);
  35. m_titleLabel = new QLabel(this);
  36. m_titleLabel->setText("专家列表");
  37. QFont ft("Microsoft YaHei", 12);
  38. m_titleLabel->setFont(ft);
  39. m_hBoxLayout = new QHBoxLayout();
  40. m_searchLineEdit = new SearchLineEdit(this);
  41. m_searchLineEdit->setPlaceholderText("搜索");
  42. m_searchLineEdit->setMinimumWidth(300);
  43. m_addExpertButton = new PushButton("添加", NEWFLICON(FluentIcon, ADD), this);
  44. m_detailButton = new ToolButton(NEWFLICON(QFDIcon, Detail), this);
  45. m_detailButton->setToolTip("详细信息");
  46. m_deleteButton = new ToolButton(NEWFLICON(FluentIcon, DELETE), this);
  47. m_deleteButton->setToolTip("删除用户");
  48. m_expertListWidget = new ExpertListWidget(this);
  49. }
  50. void ExpertManageView::initLayout()
  51. {
  52. m_vBoxLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
  53. m_vBoxLayout->setContentsMargins(15, 10, 10, 15);
  54. m_vBoxLayout->addLayout(m_hBoxLayout);
  55. m_hBoxLayout->setContentsMargins(10, 0, 10, 0);
  56. m_hBoxLayout->addWidget(m_titleLabel);
  57. m_hBoxLayout->addSpacing(15);
  58. m_hBoxLayout->addWidget(m_searchLineEdit, 0, Qt::AlignLeft);
  59. m_hBoxLayout->addWidget(m_addExpertButton, 1, Qt::AlignLeft);
  60. m_hBoxLayout->addStretch();
  61. m_hBoxLayout->addWidget(m_detailButton);
  62. m_hBoxLayout->addWidget(m_deleteButton);
  63. setListButtonHidden(true);
  64. m_vBoxLayout->addWidget(m_expertListWidget);
  65. }
  66. void ExpertManageView::connectSignalsAndSlots()
  67. {
  68. connect(m_addExpertButton, &PushButton::clicked, this, &ExpertManageView::slotAddExpertClicked);
  69. connect(m_detailButton, &PushButton::clicked, this, &ExpertManageView::slotDetailClicked);
  70. connect(m_deleteButton, &PushButton::clicked, this, &ExpertManageView::slotDeleteClicked);
  71. connect(m_expertListWidget, &ExpertListWidget::signalSelectionChanged, this,
  72. &ExpertManageView::slotListSelectionChanged);
  73. connect(m_expertListWidget, &ExpertListWidget::siganlItemDoubleClicked, this,
  74. &ExpertManageView::slotListItemDoubleClicked);
  75. }
  76. void ExpertManageView::setListButtonHidden(bool hidden)
  77. {
  78. m_detailButton->setHidden(hidden);
  79. m_deleteButton->setHidden(hidden);
  80. }
  81. void ExpertManageView::showExpertInfo(int mode)
  82. {
  83. if (m_expertInfoWidget == nullptr) {
  84. m_expertInfoWidget = new ExpertInfoWidget(this);
  85. }
  86. m_expertInfoWidget->setMode(ExpertInfoWidget::Mode(mode));
  87. if (m_expertInfoWidget->isVisible() == false) {
  88. m_expertInfoWidget->clearInputs();
  89. m_expertInfoWidget->show();
  90. }
  91. }
  92. void ExpertManageView::slotAddExpertClicked()
  93. {
  94. showExpertInfo(ExpertInfoWidget::Add);
  95. }
  96. void ExpertManageView::slotDetailClicked()
  97. {
  98. showExpertInfo(ExpertInfoWidget::Read);
  99. }
  100. void ExpertManageView::slotDeleteClicked()
  101. {
  102. MessageBox *m = new MessageBox("删除专家信息", "删除后不可恢复,确认删除?", topLevelWidget());
  103. m->exec();
  104. }
  105. void ExpertManageView::slotListSelectionChanged()
  106. {
  107. setListButtonHidden(!m_expertListWidget->isItemSelected());
  108. }
  109. void ExpertManageView::slotListItemDoubleClicked()
  110. {
  111. showExpertInfo(ExpertInfoWidget::Read);
  112. }