calendarex.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef CALENDAREX_H
  2. #define CALENDAREX_H
  3. #include <QWidget>
  4. #include "calendarwidgetex.h"
  5. #include "DropShadow/idropshadowable.h"
  6. class QHBoxLayout;
  7. class CalendarInterface : public QWidget, public IDropShadowable
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit CalendarInterface(QWidget *parent = nullptr);
  12. virtual ~CalendarInterface();
  13. /* 弹出位置? */
  14. void positionCalendarPopup(QWidget *q);
  15. protected:
  16. virtual void SetCalendarSync(const QDate &defaultDate) = 0;
  17. protected:
  18. QHBoxLayout* m_pLayout;
  19. const int SHADOW_RADIUS = 16;
  20. const int SPACING = 8;
  21. const int CALENDAR_WIDTH = 325;
  22. const int CALENDAR_HEIGHT = 350;
  23. };
  24. /**
  25. * @brief 带有阴影的日历
  26. *
  27. */
  28. class CalendarEx : public CalendarInterface
  29. {
  30. Q_OBJECT
  31. public:
  32. explicit CalendarEx(const QDate& defaultDate = QDate(), QWidget* parent = nullptr);
  33. virtual ~CalendarEx() {}
  34. signals:
  35. void sig_DateChanged(const QDate& date);
  36. private:
  37. virtual void SetCalendarSync(const QDate &defaultDate);
  38. private:
  39. CalendarWidgetEx *m_pCalendar;
  40. };
  41. class ScopedCalendar : public CalendarInterface
  42. {
  43. Q_OBJECT
  44. public:
  45. explicit ScopedCalendar(const QDate &from = QDate(), const QDate &to = QDate(), QWidget *parent = nullptr);
  46. virtual ~ScopedCalendar() { };
  47. void SetMinimumDate(const QDate &date);
  48. void SetMaximumDate(const QDate &date);
  49. signals:
  50. void sig_ScopeSelected(const QDate &from, const QDate &to);
  51. public slots:
  52. void OnScopeSelected(const QDate &from, const QDate &to);
  53. private:
  54. virtual void SetCalendarSync(const QDate &defaultDate);
  55. private:
  56. CalendarWidgetEx *m_pCalendar_L;
  57. CalendarWidgetEx *m_pCalendar_R;
  58. };
  59. #endif // CALENDAREX_H