| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- #ifndef CDATE_H
 
- #define CDATE_H
 
- /**
 
-  * 使用说明
 
-  *  1、这个是仿照TimeWidget做的一个可以点击空白处隐藏自身的日历控件
 
-  *  2、实现方式就是将父类的事件注册到这个控件上,拦截父类的鼠标点击,判断
 
-  *     是否在这个控件上进行隐藏,因此控件显示范围就依赖于父类空间大小了
 
-  *  3、使用方法:
 
-  *      1) 可以选择点击空白处隐藏或者不隐藏,设置PopuType类型就行
 
-  *
 
- */
 
- #include <QDialog>
 
- #include <QWidget>
 
- #include <QDate>
 
- class CalendarWidgetEx;
 
- class OneShadow;
 
- class CDate : public QWidget
 
- {
 
-     Q_OBJECT
 
-     const int RADIUS = 16;              /* 阴影范围 */
 
-     const int CALENDAR_WIDTH = 325;     /* 日历大小 */
 
-     const int CALENDAR_HEIGHT = 350;
 
- public:
 
-     enum PopupType{
 
-         Popup = 0,
 
-         NoPopup = 1
 
-     };
 
-     CDate(const QDate& defaultDate,QWidget *parent = nullptr,PopupType type = Popup);
 
-     CDate(QWidget *parent = nullptr,PopupType type = Popup);
 
-     /* 阻塞执行 */
 
-     QDate execShow();
 
-     /* 设置日期 */
 
-     void setDate(const QDate& date);
 
-     /* 获取日期 */
 
-     QDate getDate() const { return m_date; }
 
- signals:
 
-     void signal_DateChanged(const QDate& date);
 
-     void signal_close();
 
- protected:
 
-     void paintEvent(QPaintEvent *event);
 
-     bool eventFilter(QObject *watched, QEvent *event);
 
- private:
 
-     void init(const QDate& defaultDate);
 
- private:
 
-     QDate m_date;
 
-     CalendarWidgetEx* m_calendarEx = nullptr;
 
-     OneShadow* m_shadow = nullptr;
 
-     QWidget* m_parent = nullptr;
 
-     PopupType m_type;
 
- };
 
- #endif // CDATE_H
 
 
  |