managerplan.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #include "managerplan.h"
  2. #include "ui_managerplan.h"
  3. #include <QMouseEvent>
  4. #include <QDesktopWidget>
  5. #include "UIStyleManager.h"
  6. #include "OneShadowEffect.h"
  7. ManagerPlan::ManagerPlan(QDialog *parent) :
  8. QDialog(parent),
  9. ui(new Ui::ManagerPlan)
  10. {
  11. ui->setupUi(this);
  12. /* 设置隐藏边框 */
  13. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  14. /* 设置底层样式表 */
  15. this->setAttribute(Qt::WA_TranslucentBackground);
  16. /* 创建阴影 */
  17. auto pShadow = new OneShadowEffect(this);
  18. ui->widget_background->setGraphicsEffect(pShadow);
  19. /* 获取屏幕大小 */
  20. auto screenRect = QApplication::desktop()->availableGeometry();
  21. this->resize(screenRect.width(), screenRect.height());
  22. /* 注册事件过滤器 */
  23. ui->cBox_selectChn->installEventFilter(this);
  24. ui->pBtn_close->installEventFilter(this);
  25. /* 设置时间和日期选择Tab */
  26. setTabWidget();
  27. /* 设置默认时间和日期 */
  28. auto date = QDate::currentDate();
  29. auto time = QTime::fromString("00:00:00", "hh:mm:ss");
  30. ui->timeEdit_weekStart->setTime(time);
  31. ui->timeEdit_weekEnd->setTime(time);
  32. ui->timeEdit_specialStart->setTime(time);
  33. ui->timeEdit_specialEnd->setTime(time);
  34. ui->dateEdit_specialStart->setDisplayFormat("yy-MM-dd");
  35. ui->dateEdit_specialEnd->setDisplayFormat("yy-MM-dd");
  36. ui->dateEdit_specialStart->setDate(date);
  37. ui->dateEdit_specialEnd->setDate(date);
  38. /* 设置时间图标 */
  39. ui->timeEdit_weekStart->setIcon(":/ICON/ICON/Time.png");
  40. ui->timeEdit_weekEnd->setIcon(":/ICON/ICON/Time.png");
  41. ui->timeEdit_specialStart->setIcon(":/ICON/ICON/Time.png");
  42. ui->timeEdit_specialEnd->setIcon(":/ICON/ICON/Time.png");
  43. ui->timeEdit_weekStart->SetMainWindow(this);
  44. ui->timeEdit_weekEnd->SetMainWindow(this);
  45. ui->timeEdit_specialStart->SetMainWindow(this);
  46. ui->timeEdit_specialEnd->SetMainWindow(this);
  47. /* 设置可选择的周几 */
  48. setWeekDay();
  49. /* 连接信号和槽 */
  50. connect(ui->pBtn_cancel, &QPushButton::clicked, this, &ManagerPlan::close);
  51. connect(ui->pBtn_close, &QPushButton::clicked, this, &ManagerPlan::close);
  52. connect(&EPUIStyle, &UIStyleManager::signal_qssChanged, this, &ManagerPlan::do_setUIStyle);
  53. do_setUIStyle();
  54. /* 设置下拉框阴影 */
  55. ui->cBox_selectChn->setViewShadowEffect();
  56. ui->cBox_selectWeekStart->setViewShadowEffect();
  57. ui->cBox_selectWeekEnd->setViewShadowEffect();
  58. /* 默认显示周计划 */
  59. ui->tabWidget->setCurrentIndex(0);
  60. }
  61. ManagerPlan::~ManagerPlan()
  62. {
  63. delete ui;
  64. }
  65. /* 修改UI样式 */
  66. void ManagerPlan::do_setUIStyle()
  67. {
  68. this->setStyleSheet(EPUIStyle.StrQSS_ManagerPlan);
  69. }
  70. /* 设置时间和日期选择Tab */
  71. void ManagerPlan::setTabWidget()
  72. {
  73. /* 设置Tab的大小 */
  74. QSize size(ui->tabWidget->width(), ui->tabWidget->height() - ui->tabWidget->tabBar()->height() - 2);
  75. /* 设置正常日的Tab */
  76. ui->tab_week->resize(size);
  77. auto vLayout1 = new QVBoxLayout(ui->tab_week);
  78. vLayout1->setContentsMargins(0, 24, 0, 0);
  79. vLayout1->setSpacing(12);
  80. ui->tab_week->setLayout(vLayout1);
  81. vLayout1->addWidget(ui->widget_weekStart);
  82. vLayout1->addWidget(ui->widget_weekEnd);
  83. /* 设置特殊日的Tab */
  84. ui->tab_special->resize(size);
  85. auto vLayout2 = new QVBoxLayout(ui->tab_special);
  86. vLayout2->setContentsMargins(0, 24, 0, 0);
  87. vLayout2->setSpacing(12);
  88. ui->tab_special->setLayout(vLayout2);
  89. vLayout2->addWidget(ui->widget_specialStart);
  90. vLayout2->addWidget(ui->widget_specialEnd);
  91. }
  92. /* 设置可选择的周几 */
  93. void ManagerPlan::setWeekDay()
  94. {
  95. ui->cBox_selectWeekStart->addItem("星期一", static_cast<int>(enum_WeekDay::WeekDay_Mon));
  96. ui->cBox_selectWeekStart->addItem("星期二", static_cast<int>(enum_WeekDay::WeekDay_Tue));
  97. ui->cBox_selectWeekStart->addItem("星期三", static_cast<int>(enum_WeekDay::WeekDay_Wed));
  98. ui->cBox_selectWeekStart->addItem("星期四", static_cast<int>(enum_WeekDay::WeekDay_Thu));
  99. ui->cBox_selectWeekStart->addItem("星期五", static_cast<int>(enum_WeekDay::WeekDay_Fri));
  100. ui->cBox_selectWeekStart->addItem("星期六", static_cast<int>(enum_WeekDay::WeekDay_Sat));
  101. ui->cBox_selectWeekStart->addItem("星期天", static_cast<int>(enum_WeekDay::WeekDay_Sun));
  102. ui->cBox_selectWeekEnd->addItem("星期一", static_cast<int>(enum_WeekDay::WeekDay_Mon));
  103. ui->cBox_selectWeekEnd->addItem("星期二", static_cast<int>(enum_WeekDay::WeekDay_Tue));
  104. ui->cBox_selectWeekEnd->addItem("星期三", static_cast<int>(enum_WeekDay::WeekDay_Wed));
  105. ui->cBox_selectWeekEnd->addItem("星期四", static_cast<int>(enum_WeekDay::WeekDay_Thu));
  106. ui->cBox_selectWeekEnd->addItem("星期五", static_cast<int>(enum_WeekDay::WeekDay_Fri));
  107. ui->cBox_selectWeekEnd->addItem("星期六", static_cast<int>(enum_WeekDay::WeekDay_Sat));
  108. ui->cBox_selectWeekEnd->addItem("星期天", static_cast<int>(enum_WeekDay::WeekDay_Sun));
  109. }
  110. /* 鼠标点击事件 */
  111. void ManagerPlan::mousePressEvent(QMouseEvent *event)
  112. {
  113. m_lastPos = event->globalPos();
  114. event->accept();
  115. }
  116. /* 鼠标移动事件 */
  117. void ManagerPlan::mouseMoveEvent(QMouseEvent *event)
  118. {
  119. auto point = ui->widget_top->mapToGlobal(QPoint(0, 0));
  120. QRect rect(point, ui->widget_top->size());
  121. if(!rect.contains(m_lastPos))
  122. {
  123. event->accept();
  124. return;
  125. }
  126. int dx = event->globalX() - m_lastPos.x();
  127. int dy = event->globalY() - m_lastPos.y();
  128. ui->widget_background->move(ui->widget_background->x() + dx, ui->widget_background->y() + dy);
  129. m_lastPos = event->globalPos();
  130. event->accept();
  131. }
  132. /* 鼠标释放事件 */
  133. void ManagerPlan::mouseReleaseEvent(QMouseEvent *event)
  134. {
  135. event->accept();
  136. }
  137. /* 事件过滤器 */
  138. bool ManagerPlan::eventFilter(QObject *watched, QEvent *event)
  139. {
  140. if(watched == ui->cBox_selectChn)
  141. {
  142. if(event->type() == QEvent::Wheel)
  143. {
  144. return true;
  145. }
  146. }
  147. else if(watched == ui->pBtn_close)
  148. {
  149. if(event->type() == QEvent::Enter)
  150. {
  151. ui->pBtn_close->setProperty("Hover", true);
  152. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  153. ui->pBtn_close->style()->polish(ui->pBtn_close);
  154. return true;
  155. }else if(event->type() == QEvent::Leave)
  156. {
  157. ui->pBtn_close->setProperty("Hover", false);
  158. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  159. ui->pBtn_close->style()->polish(ui->pBtn_close);
  160. return true;
  161. }
  162. }
  163. return QDialog::eventFilter(watched, event);
  164. }