#ifndef CALENDAREX_H #define CALENDAREX_H #include #include "calendarwidgetex.h" #include "DropShadow/idropshadowable.h" class QHBoxLayout; class CalendarInterface : public QWidget, public IDropShadowable { Q_OBJECT public: explicit CalendarInterface(QWidget *parent = nullptr); virtual ~CalendarInterface(); /* 弹出位置? */ void positionCalendarPopup(QWidget *q); protected: virtual void SetCalendarSync(const QDate &defaultDate) = 0; protected: QHBoxLayout* m_pLayout; const int SHADOW_RADIUS = 16; const int SPACING = 8; const int CALENDAR_WIDTH = 325; const int CALENDAR_HEIGHT = 350; }; /** * @brief 带有阴影的日历 * */ class CalendarEx : public CalendarInterface { Q_OBJECT public: explicit CalendarEx(const QDate& defaultDate = QDate(), QWidget* parent = nullptr); virtual ~CalendarEx() {} signals: void sig_DateChanged(const QDate& date); private: virtual void SetCalendarSync(const QDate &defaultDate); private: CalendarWidgetEx *m_pCalendar; }; class ScopedCalendar : public CalendarInterface { Q_OBJECT public: explicit ScopedCalendar(const QDate &from = QDate(), const QDate &to = QDate(), QWidget *parent = nullptr); virtual ~ScopedCalendar() { }; void SetMinimumDate(const QDate &date); void SetMaximumDate(const QDate &date); signals: void sig_ScopeSelected(const QDate &from, const QDate &to); public slots: void OnScopeSelected(const QDate &from, const QDate &to); private: virtual void SetCalendarSync(const QDate &defaultDate); private: CalendarWidgetEx *m_pCalendar_L; CalendarWidgetEx *m_pCalendar_R; }; #endif // CALENDAREX_H