#include "onedetectplan.h" #include "ui_onedetectplan.h" #include "timewidget.h" #include "customcombobox.h" #include "GlobalVariable.h" #include "calendardtedit.h" #include #include #include OneDetectPlan::OneDetectPlan(eWeekType type, QWidget *parent) : QWidget(parent), ui(new Ui::OneDetectPlan), m_type(type) { ui->setupUi(this); if(m_type == eWeekType::Week_Special) { ui->dateEdit->setVisible(true); /* 特殊日不显示下拉框 */ ui->comboBox->hide(); /* 将下拉框从布局中移除 */ // this->layout()->removeWidget(ui->comboBox); } else { ui->comboBox->setVisible(true); ui->dateEdit->hide(); /* 将日期选择框从布局中移除 */ // this->layout()->removeWidget(ui->dateEdit); } /* 设置下拉框阴影 */ ui->comboBox->setViewShadowEffect(); /* 设置时间框默认时间 */ m_timeStart = QTime(0, 0, 0); m_timeEnd = QTime(23, 59, 59); ui->pBtn_timeStart->setText(m_timeStart.toString("hh:mm:ss")); ui->pBtn_timeEnd->setText(m_timeEnd.toString("hh:mm:ss")); /* 设置默认的日期格式 */ ui->dateEdit->setDisplayFormat("yyyy-MM-dd"); /* 禁止修改日期 */ ui->dateEdit->setManualDisableEdit(true, true); /* 禁用comboBox滚动修改 */ ui->comboBox->setWheelDisabled(true); /* 给下拉框设置可选项 */ for(auto it = MapWeekTypeToString.begin(); it != MapWeekTypeToString.end(); ++it) { if(it.key() == eWeekType::Week_Special) { continue; // 跳过特殊日 } ui->comboBox->addItem(it.value(), QVariant::fromValue(it.key())); } /* 连接信号和槽 */ connect(ui->pBtn_close, &QPushButton::clicked, this, &OneDetectPlan::signal_oneDetectPlanCloseClicked); connect(ui->pBtn_timeStart, &QPushButton::clicked, this, &OneDetectPlan::do_timeButtonClicked); connect(ui->pBtn_timeStartIcon, &QPushButton::clicked, this, &OneDetectPlan::do_timeButtonClicked); connect(ui->pBtn_timeEnd, &QPushButton::clicked, this, &OneDetectPlan::do_timeButtonClicked); connect(ui->pBtn_timeEndIcon, &QPushButton::clicked, this, &OneDetectPlan::do_timeButtonClicked); connect(ui->comboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &OneDetectPlan::do_comboBox_currentIndexChanged); } OneDetectPlan::~OneDetectPlan() { delete ui; } /* 设置QSS */ void OneDetectPlan::setQSS(const QString &qss) { if(qss.isEmpty()) { return; } /* 设置QSS */ this->setStyleSheet(qss); } /* 设置计划 */ void OneDetectPlan::setPlan(const OnePlan_t &plan) { m_plan = plan; /* 设置周几 */ ui->comboBox->setCurrentText(MapWeekTypeToString.value(plan.weekType)); /* 设置日期 */ m_timeStart = plan.timeStart; m_timeEnd = plan.timeEnd; ui->pBtn_timeStart->setText(m_timeStart.toString("hh:mm:ss")); ui->pBtn_timeEnd->setText(m_timeEnd.toString("hh:mm:ss")); ui->dateEdit->setDate(plan.date); } /* 获取计划 */ const OnePlan_t& OneDetectPlan::getPlan() { /* 更新计划 */ m_plan.weekType = ui->comboBox->currentData().value(); m_plan.timeStart = m_timeStart; m_plan.timeEnd = m_timeEnd; m_plan.date = ui->dateEdit->date(); return m_plan; } /* 修改了周几 */ void OneDetectPlan::do_comboBox_currentIndexChanged(int index) { /* 获取当前的计划 */ OnePlan_t formerPlan = m_plan; getPlan(); // 更新计划 emit signal_planModifiedWeek(formerPlan, m_plan); } /* 点击了时间按钮 */ void OneDetectPlan::do_timeButtonClicked() { /* 获取按钮 */ QPushButton *pBtn = qobject_cast(sender()); if(!pBtn) { return; } /* 获取按钮位置和开始结束时间标志 */ QPoint pBtnSize; bool isStartTime = false; if(pBtn == ui->pBtn_timeStart || pBtn == ui->pBtn_timeStartIcon) { pBtnSize = ui->widget_timeStart->mapToGlobal(QPoint(0, 0)); isStartTime = true; } else if(pBtn == ui->pBtn_timeEnd || pBtn == ui->pBtn_timeEndIcon) { pBtnSize = ui->widget_timeEnd->mapToGlobal(QPoint(0, 0)); isStartTime = false; } emit signal_timeButtonClicked(pBtnSize, isStartTime); }