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
|