#ifndef CALENDARDTEDIT_H #define CALENDARDTEDIT_H #include #include /* 需要设置这个属性,qss设置的图标才会生效 * setCalendarPopup(true); */ class CalendarDTEdit : public QDateTimeEdit { Q_OBJECT public: explicit CalendarDTEdit(QWidget *parent = nullptr); virtual ~CalendarDTEdit(); void SetCalendarAutoClose(bool value); void CloseCalendar(); /* 手动触发日期选择弹框 */ void triggerCalendarPopup(); /* 设置手动禁止修改日期区域,只能使用弹窗,第二个参数设置点击日期是否会出现日期选择弹框 */ void setManualDisableEdit(bool value, bool triggerPopup = false); /* 设置禁用日期选择器 */ void setCalendarEnabled(bool value); /* 设置QSS */ void setQSS(); signals: void sig_SetCurrentPage(int year, int month); protected: /* 这里使用事件来处理hover样式,样式表的hover不生效,只能手动处理了 */ /* 鼠标进入离开事件 */ void enterEvent(QEvent* event) override; /* 鼠标离开事件 */ void leaveEvent(QEvent* event) override; void mousePressEvent(QMouseEvent* e) override; bool eventFilter(QObject* watched, QEvent* event) override; private: QObject* m_pCalendar = nullptr; bool m_isPopup = false; bool m_isEnableCalendar = true; }; #endif // CALENDARDTEDIT_H