#include "ExpertManageView.h" #include "QFDIcon.h" #include "MainWindow.h" #include "ExpertInfoWidget.h" #include "ExpertListWidget.h" #include #include #include #include #include #include ExpertManageView::ExpertManageView(QWidget *parent) : QWidget(parent) { } void ExpertManageView::showEvent(QShowEvent *event) { qDebug() << __FUNCTION__ << __LINE__; QWidget::showEvent(event); init(); } void ExpertManageView::hideEvent(QHideEvent *event) { QWidget::hideEvent(event); } void ExpertManageView::init() { if (m_initilized == false) { initialize(); initLayout(); connectSignalsAndSlots(); m_initilized = true; } } void ExpertManageView::initialize() { m_vBoxLayout = new QVBoxLayout(this); m_titleLabel = new QLabel(this); m_titleLabel->setText("专家列表"); QFont ft("Microsoft YaHei", 12); m_titleLabel->setFont(ft); m_hBoxLayout = new QHBoxLayout(); m_searchLineEdit = new SearchLineEdit(this); m_searchLineEdit->setPlaceholderText("搜索"); m_searchLineEdit->setMinimumWidth(300); m_addExpertButton = new PushButton("添加", NEWFLICON(FluentIcon, ADD), this); m_detailButton = new ToolButton(NEWFLICON(QFDIcon, Detail), this); m_detailButton->setToolTip("详细信息"); m_deleteButton = new ToolButton(NEWFLICON(FluentIcon, DELETE), this); m_deleteButton->setToolTip("删除用户"); m_expertListWidget = new ExpertListWidget(this); } void ExpertManageView::initLayout() { m_vBoxLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); m_vBoxLayout->setContentsMargins(15, 10, 10, 15); m_vBoxLayout->addLayout(m_hBoxLayout); m_hBoxLayout->setContentsMargins(10, 0, 10, 0); m_hBoxLayout->addWidget(m_titleLabel); m_hBoxLayout->addSpacing(15); m_hBoxLayout->addWidget(m_searchLineEdit, 0, Qt::AlignLeft); m_hBoxLayout->addWidget(m_addExpertButton, 1, Qt::AlignLeft); m_hBoxLayout->addStretch(); m_hBoxLayout->addWidget(m_detailButton); m_hBoxLayout->addWidget(m_deleteButton); setListButtonHidden(true); m_vBoxLayout->addWidget(m_expertListWidget); } void ExpertManageView::connectSignalsAndSlots() { connect(m_addExpertButton, &PushButton::clicked, this, &ExpertManageView::slotAddExpertClicked); connect(m_detailButton, &PushButton::clicked, this, &ExpertManageView::slotDetailClicked); connect(m_deleteButton, &PushButton::clicked, this, &ExpertManageView::slotDeleteClicked); connect(m_expertListWidget, &ExpertListWidget::signalSelectionChanged, this, &ExpertManageView::slotListSelectionChanged); connect(m_expertListWidget, &ExpertListWidget::siganlItemDoubleClicked, this, &ExpertManageView::slotListItemDoubleClicked); } void ExpertManageView::setListButtonHidden(bool hidden) { m_detailButton->setHidden(hidden); m_deleteButton->setHidden(hidden); } void ExpertManageView::showExpertInfo(int mode) { if (m_expertInfoWidget == nullptr) { m_expertInfoWidget = new ExpertInfoWidget(this); } m_expertInfoWidget->setMode(ExpertInfoWidget::Mode(mode)); if (m_expertInfoWidget->isVisible() == false) { m_expertInfoWidget->clearInputs(); m_expertInfoWidget->show(); } } void ExpertManageView::slotAddExpertClicked() { showExpertInfo(ExpertInfoWidget::Add); } void ExpertManageView::slotDetailClicked() { showExpertInfo(ExpertInfoWidget::Read); } void ExpertManageView::slotDeleteClicked() { MessageBox *m = new MessageBox("删除专家信息", "删除后不可恢复,确认删除?", topLevelWidget()); m->exec(); } void ExpertManageView::slotListSelectionChanged() { setListButtonHidden(!m_expertListWidget->isItemSelected()); } void ExpertManageView::slotListItemDoubleClicked() { showExpertInfo(ExpertInfoWidget::Read); }