123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- #include "managerplan.h"
- #include "ui_managerplan.h"
- #include <QMouseEvent>
- #include <QDesktopWidget>
- #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<int>(enum_WeekDay::WeekDay_Mon));
- ui->cBox_selectWeekStart->addItem("星期二", static_cast<int>(enum_WeekDay::WeekDay_Tue));
- ui->cBox_selectWeekStart->addItem("星期三", static_cast<int>(enum_WeekDay::WeekDay_Wed));
- ui->cBox_selectWeekStart->addItem("星期四", static_cast<int>(enum_WeekDay::WeekDay_Thu));
- ui->cBox_selectWeekStart->addItem("星期五", static_cast<int>(enum_WeekDay::WeekDay_Fri));
- ui->cBox_selectWeekStart->addItem("星期六", static_cast<int>(enum_WeekDay::WeekDay_Sat));
- ui->cBox_selectWeekStart->addItem("星期天", static_cast<int>(enum_WeekDay::WeekDay_Sun));
- ui->cBox_selectWeekEnd->addItem("星期一", static_cast<int>(enum_WeekDay::WeekDay_Mon));
- ui->cBox_selectWeekEnd->addItem("星期二", static_cast<int>(enum_WeekDay::WeekDay_Tue));
- ui->cBox_selectWeekEnd->addItem("星期三", static_cast<int>(enum_WeekDay::WeekDay_Wed));
- ui->cBox_selectWeekEnd->addItem("星期四", static_cast<int>(enum_WeekDay::WeekDay_Thu));
- ui->cBox_selectWeekEnd->addItem("星期五", static_cast<int>(enum_WeekDay::WeekDay_Fri));
- ui->cBox_selectWeekEnd->addItem("星期六", static_cast<int>(enum_WeekDay::WeekDay_Sat));
- ui->cBox_selectWeekEnd->addItem("星期天", static_cast<int>(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);
- }
|