#include "managerplan.h" #include "ui_managerplan.h" #include #include #include "UIStyleManager.h" #include "OneShadowEffect.h" ManagerPlan::ManagerPlan(QDialog *parent) : QDialog(parent), ui(new Ui::ManagerPlan) { ui->setupUi(this); /* 设置隐藏边框 */ this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); /* 设置底层样式表 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 创建阴影 */ auto pShadow = new OneShadowEffect(this); ui->widget_background->setGraphicsEffect(pShadow); /* 获取屏幕大小 */ auto screenRect = QApplication::desktop()->availableGeometry(); this->resize(screenRect.width(), screenRect.height()); /* 注册事件过滤器 */ ui->cBox_selectChn->installEventFilter(this); ui->pBtn_close->installEventFilter(this); /* 设置时间和日期选择Tab */ setTabWidget(); /* 设置默认时间和日期 */ auto date = QDate::currentDate(); auto time = QTime::fromString("00:00:00", "hh:mm:ss"); ui->timeEdit_weekStart->setTime(time); ui->timeEdit_weekEnd->setTime(time); ui->timeEdit_specialStart->setTime(time); ui->timeEdit_specialEnd->setTime(time); ui->dateEdit_specialStart->setDisplayFormat("yy-MM-dd"); ui->dateEdit_specialEnd->setDisplayFormat("yy-MM-dd"); ui->dateEdit_specialStart->setDate(date); ui->dateEdit_specialEnd->setDate(date); /* 设置时间图标 */ ui->timeEdit_weekStart->setIcon(":/ICON/ICON/Time.png"); ui->timeEdit_weekEnd->setIcon(":/ICON/ICON/Time.png"); ui->timeEdit_specialStart->setIcon(":/ICON/ICON/Time.png"); ui->timeEdit_specialEnd->setIcon(":/ICON/ICON/Time.png"); ui->timeEdit_weekStart->SetMainWindow(this); ui->timeEdit_weekEnd->SetMainWindow(this); ui->timeEdit_specialStart->SetMainWindow(this); ui->timeEdit_specialEnd->SetMainWindow(this); /* 设置可选择的周几 */ setWeekDay(); /* 连接信号和槽 */ connect(ui->pBtn_cancel, &QPushButton::clicked, this, &ManagerPlan::close); connect(ui->pBtn_close, &QPushButton::clicked, this, &ManagerPlan::close); connect(&EPUIStyle, &UIStyleManager::signal_qssChanged, this, &ManagerPlan::do_setUIStyle); do_setUIStyle(); /* 设置下拉框阴影 */ ui->cBox_selectChn->setViewShadowEffect(); ui->cBox_selectWeekStart->setViewShadowEffect(); ui->cBox_selectWeekEnd->setViewShadowEffect(); /* 默认显示周计划 */ ui->tabWidget->setCurrentIndex(0); } ManagerPlan::~ManagerPlan() { delete ui; } /* 修改UI样式 */ void ManagerPlan::do_setUIStyle() { this->setStyleSheet(EPUIStyle.StrQSS_ManagerPlan); } /* 设置时间和日期选择Tab */ void ManagerPlan::setTabWidget() { /* 设置Tab的大小 */ QSize size(ui->tabWidget->width(), ui->tabWidget->height() - ui->tabWidget->tabBar()->height() - 2); /* 设置正常日的Tab */ ui->tab_week->resize(size); auto vLayout1 = new QVBoxLayout(ui->tab_week); vLayout1->setContentsMargins(0, 24, 0, 0); vLayout1->setSpacing(12); ui->tab_week->setLayout(vLayout1); vLayout1->addWidget(ui->widget_weekStart); vLayout1->addWidget(ui->widget_weekEnd); /* 设置特殊日的Tab */ ui->tab_special->resize(size); auto vLayout2 = new QVBoxLayout(ui->tab_special); vLayout2->setContentsMargins(0, 24, 0, 0); vLayout2->setSpacing(12); ui->tab_special->setLayout(vLayout2); vLayout2->addWidget(ui->widget_specialStart); vLayout2->addWidget(ui->widget_specialEnd); } /* 设置可选择的周几 */ void ManagerPlan::setWeekDay() { ui->cBox_selectWeekStart->addItem("星期一", static_cast(enum_WeekDay::WeekDay_Mon)); ui->cBox_selectWeekStart->addItem("星期二", static_cast(enum_WeekDay::WeekDay_Tue)); ui->cBox_selectWeekStart->addItem("星期三", static_cast(enum_WeekDay::WeekDay_Wed)); ui->cBox_selectWeekStart->addItem("星期四", static_cast(enum_WeekDay::WeekDay_Thu)); ui->cBox_selectWeekStart->addItem("星期五", static_cast(enum_WeekDay::WeekDay_Fri)); ui->cBox_selectWeekStart->addItem("星期六", static_cast(enum_WeekDay::WeekDay_Sat)); ui->cBox_selectWeekStart->addItem("星期天", static_cast(enum_WeekDay::WeekDay_Sun)); ui->cBox_selectWeekEnd->addItem("星期一", static_cast(enum_WeekDay::WeekDay_Mon)); ui->cBox_selectWeekEnd->addItem("星期二", static_cast(enum_WeekDay::WeekDay_Tue)); ui->cBox_selectWeekEnd->addItem("星期三", static_cast(enum_WeekDay::WeekDay_Wed)); ui->cBox_selectWeekEnd->addItem("星期四", static_cast(enum_WeekDay::WeekDay_Thu)); ui->cBox_selectWeekEnd->addItem("星期五", static_cast(enum_WeekDay::WeekDay_Fri)); ui->cBox_selectWeekEnd->addItem("星期六", static_cast(enum_WeekDay::WeekDay_Sat)); ui->cBox_selectWeekEnd->addItem("星期天", static_cast(enum_WeekDay::WeekDay_Sun)); } /* 鼠标点击事件 */ void ManagerPlan::mousePressEvent(QMouseEvent *event) { m_lastPos = event->globalPos(); event->accept(); } /* 鼠标移动事件 */ void ManagerPlan::mouseMoveEvent(QMouseEvent *event) { auto point = ui->widget_top->mapToGlobal(QPoint(0, 0)); QRect rect(point, ui->widget_top->size()); if(!rect.contains(m_lastPos)) { event->accept(); return; } int dx = event->globalX() - m_lastPos.x(); int dy = event->globalY() - m_lastPos.y(); ui->widget_background->move(ui->widget_background->x() + dx, ui->widget_background->y() + dy); m_lastPos = event->globalPos(); event->accept(); } /* 鼠标释放事件 */ void ManagerPlan::mouseReleaseEvent(QMouseEvent *event) { event->accept(); } /* 事件过滤器 */ bool ManagerPlan::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->cBox_selectChn) { if(event->type() == QEvent::Wheel) { return true; } } else if(watched == ui->pBtn_close) { if(event->type() == QEvent::Enter) { ui->pBtn_close->setProperty("Hover", true); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; }else if(event->type() == QEvent::Leave) { ui->pBtn_close->setProperty("Hover", false); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; } } return QDialog::eventFilter(watched, event); }