addspecialitem.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef ADDSPECIALITEM_H
  2. #define ADDSPECIALITEM_H
  3. /**
  4. * 注意事:
  5. * 1、这里的日期用的提升方式,提升为CalendarTEdit,日期图标
  6. * 直接设置的箭头图标,如果想显示出来,需要设置setCalendarPopup为true
  7. */
  8. #include <QDialog>
  9. #include <QTime>
  10. #include <QDate>
  11. #include <QComboBox>
  12. class TimeWidget;
  13. class DeviceInfo;
  14. namespace Ui {
  15. class AddSpecialItem;
  16. }
  17. class AddSpecialItem : public QDialog
  18. {
  19. Q_OBJECT
  20. public:
  21. explicit AddSpecialItem(QWidget *parent = nullptr);
  22. ~AddSpecialItem();
  23. /* 设置父指针,时间选择器需要使用 */
  24. void setParentPointer(QWidget* p);
  25. /* 添加可选设备 */
  26. void setDevice(QMap<QString, DeviceInfo>& mapDev);
  27. /* 设置周几 */
  28. void setWeekDay(int week);
  29. /* 获取设别名称 */
  30. QString getDevName() const { return m_devName; }
  31. /* 获取动作 */
  32. QString getAction() const { return m_action; }
  33. /* 获取时间 */
  34. QTime getTime() const { return m_time; }
  35. /* 获取日期 */
  36. QDate getDate() const { return m_date; }
  37. /* 判断是否添加设备 */
  38. bool isAddDev() const { return m_isAddDev; }
  39. signals:
  40. /* 添加特殊日期项 */
  41. void signal_AddSpecialItem(QString dev, QString action, QDate date, QTime time);
  42. private slots:
  43. /* 进行查重和关闭页面 */
  44. void do_ok();
  45. /* 选择了设备,设置其对应的动作 */
  46. void do_selectDev();
  47. /* 选择了动作 */
  48. void do_selectAction();
  49. /* 点击了时间选择按钮,打开时间选择器 */
  50. void do_selectTime();
  51. private:
  52. /* 设置选择框报警 */
  53. void setComboBoxWarning(QComboBox* bo,bool flag);
  54. /* 设置时间报警 */
  55. void setTimeEditWarning(bool flag);
  56. void setAction(const QString& devName);
  57. protected:
  58. /* 事件过滤器 */
  59. bool eventFilter(QObject *watched, QEvent *event) override;
  60. private:
  61. Ui::AddSpecialItem *ui;
  62. QWidget* m_parent = nullptr; /* 父类指针 */
  63. QRect m_rectScreen; /* 屏幕大小 */
  64. int m_week = -1; /* 周几 */
  65. bool m_isAddDev = false; /* 是否添加设备 */
  66. QString m_devName; /* 选择的设备 */
  67. QString m_action; /* 选择的动作 */
  68. QTime m_time; /* 执行的时间 */
  69. QDate m_date; /* 执行的日期 */
  70. TimeWidget* m_timeWidget = nullptr; /* 时间选择器 */
  71. };
  72. #endif // ADDSPECIALITEM_H