#ifndef ADDSPECIALITEM_H #define ADDSPECIALITEM_H /** * 注意事: * 1、这里的日期用的提升方式,提升为CalendarTEdit,日期图标 * 直接设置的箭头图标,如果想显示出来,需要设置setCalendarPopup为true */ #include #include #include #include class TimeWidget; class DeviceInfo; namespace Ui { class AddSpecialItem; } class AddSpecialItem : public QDialog { Q_OBJECT public: explicit AddSpecialItem(QWidget *parent = nullptr); ~AddSpecialItem(); /* 设置父指针,时间选择器需要使用 */ void setParentPointer(QWidget* p); /* 添加可选设备 */ void setDevice(QMap& mapDev); /* 设置周几 */ void setWeekDay(int week); /* 获取设别名称 */ QString getDevName() const { return m_devName; } /* 获取动作 */ QString getAction() const { return m_action; } /* 获取时间 */ QTime getTime() const { return m_time; } /* 获取日期 */ QDate getDate() const { return m_date; } /* 判断是否添加设备 */ bool isAddDev() const { return m_isAddDev; } signals: /* 添加特殊日期项 */ void signal_AddSpecialItem(QString dev, QString action, QDate date, QTime time); private slots: /* 进行查重和关闭页面 */ void do_ok(); /* 选择了设备,设置其对应的动作 */ void do_selectDev(); /* 选择了动作 */ void do_selectAction(); /* 点击了时间选择按钮,打开时间选择器 */ void do_selectTime(); private: /* 设置选择框报警 */ void setComboBoxWarning(QComboBox* bo,bool flag); /* 设置时间报警 */ void setTimeEditWarning(bool flag); void setAction(const QString& devName); protected: /* 事件过滤器 */ bool eventFilter(QObject *watched, QEvent *event) override; private: Ui::AddSpecialItem *ui; QWidget* m_parent = nullptr; /* 父类指针 */ QRect m_rectScreen; /* 屏幕大小 */ int m_week = -1; /* 周几 */ bool m_isAddDev = false; /* 是否添加设备 */ QString m_devName; /* 选择的设备 */ QString m_action; /* 选择的动作 */ QTime m_time; /* 执行的时间 */ QDate m_date; /* 执行的日期 */ TimeWidget* m_timeWidget = nullptr; /* 时间选择器 */ }; #endif // ADDSPECIALITEM_H