| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- #ifndef QCUSTOMCALENDARWIDGET_H
 
- #define QCUSTOMCALENDARWIDGET_H
 
- #include <QCalendarWidget>
 
- #include <QPushButton>
 
- #include <QLabel>
 
- #include <QProxyStyle>
 
- #include "calendarheader.h"
 
- #include "calendarnav.h"
 
- class ScopeSelectionModel;
 
- class NoFocusStyle : public QProxyStyle
 
- {
 
-     Q_OBJECT
 
- public:
 
-     explicit NoFocusStyle(QObject *parent):QProxyStyle() { setParent(parent); }
 
- private:
 
-     void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
 
-                        QPainter *painter, const QWidget *widget) const;
 
- };
 
- /**
 
-  * @brief The CalendarWidgetEx class
 
-  */
 
- class CalendarWidgetEx : public QCalendarWidget
 
- {
 
-     Q_OBJECT
 
- public:
 
-     enum SelectMode
 
-     {
 
-         Normal,
 
-         Multi,
 
-         Scope,
 
-     };
 
- public:
 
-     explicit CalendarWidgetEx(QWidget *parent = nullptr);
 
-     ~CalendarWidgetEx() override {}
 
-     void SetSelectMode(SelectMode mode, ScopeSelectionModel *pDataModel = nullptr);
 
-     QList<QDate> GetSelectDays(){return m_listMultiSelectDays;}
 
-     void hideNavigatioinButton(bool bPreYear, bool bPreMon, bool bNextYear, bool bNextMon);
 
-     /* 设置UI样式,0亮色,1暗色 */
 
-     void setUIStyle();
 
- private:
 
-     QDate dateForCell(int row, int column) const;
 
-     QDate referenceDate() const;
 
-     int columnForFirstOfMonth(const QDate &date) const;
 
-     int columnForDayOfWeek(int day) const;
 
-     void initSkinColor();
 
- protected:
 
-     void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const override;
 
-     void paintEvent(QPaintEvent *) override;
 
-     void mouseMoveEvent(QMouseEvent *event) override;
 
-     void leaveEvent(QEvent *) override;
 
- public:
 
-     QSize minimumSizeHint() const override;
 
- private slots:
 
-     void OnClicked(const QDate &date);
 
- private:
 
-     int m_style = 0;
 
-     CalendarNav* m_pNav = nullptr;
 
-     CalendarHeader* m_pHeader = nullptr;
 
-     /* 亮色 */
 
-     const QColor NORMAL_TEXT_BRIGHT{QColor(58,63,99)};
 
-     const QColor TODAY_TEXT_BRIGHT{QColor(68,88,254)};
 
-     const QColor SELECT_TEXT_BRIGHT{Qt::white};
 
-     const QColor DISABLE_TEXT_BRIGHT{QColor(133, 142, 189)};
 
-     const QColor SPLIT_LINE_BRIGHT{QColor(0, 0, 0, 23)};
 
-     const QColor SELECT_BRIGHT{QColor(68, 88, 254)};
 
-     const QColor HOVER_BRIGHT{QColor(227, 238, 255)};
 
-     const QColor BG_BRUSH_BRIGHT{QColor(255,255,255)};      /* 背景 */
 
-     const QColor BG_PEN_BRIGHT{QColor(0, 0, 0, 23)};        /* 线条 */
 
-     /* 暗色 */
 
-     const QColor NORMAL_TEXT_DEEP{QColor(255,255,255,230)};
 
-     const QColor TODAY_TEXT_DEEP{Qt::black};
 
-     const QColor SELECT_TEXT_DEEP{Qt::black};
 
-     const QColor DISABLE_TEXT_DEEP{QColor(255,255,255,77)};
 
-     const QColor SPLIT_LINE_DEEP{QColor(255,255,255,64)};
 
-     const QColor SELECT_DEEP{QColor(233, 161, 18)};
 
-     const QColor HOVER_DEEP{QColor(132, 134, 136)};
 
-     
 
-     const QColor TODAY_DEEP{QColor(67, 142, 255)};
 
-     const QColor BG_PEN_DEEP{QColor(255,255,255,51)};       /* 线条 */
 
-     const QColor BG_BRUSH_DEEP{QColor{116,117,120}};        /* 背景 */
 
-     const QColor BG_SPECIAL_PEN_DEEP{QColor{27, 186, 102}}; 
 
-     const QColor BG_SPECIAL_BRUSH_DEEP{QColor{78, 112, 97}};
 
-     const int DEFAULT_FONT_SIZE = 16;
 
-     const int TEXT_WIDTH = 24;
 
-     const qreal WINDOW_RADIUS = 4.0;
 
-     const int WINDOW_WIDTH = 325;
 
-     const int WINDOW_HEIGHT = 350;
 
-     QDate m_dateMouseOver;
 
-     QList<QDate> m_listMultiSelectDays;
 
-     SelectMode m_modeSelection;
 
-     ScopeSelectionModel *m_pDateScopeModel;
 
-     int m_nLineHeight;      //星期和日之间的分割线的Y坐标
 
-     bool m_hasTopSplitLine; // 是否绘制顶部分割线
 
-     QColor m_normalTextColor;
 
-     QColor m_todayTextColor;
 
-     QColor m_selectTextColor;
 
-     QColor m_disableTextColor;
 
-     QColor m_splitLineColor;
 
-     QColor m_selectBlockColor;
 
-     QColor m_hoverBlockColor;
 
-     QColor m_bgBrushColor;          /* 背景画刷 */
 
-     QColor m_bgPenColor;            /* 背景画笔 */
 
- };
 
- #endif // QCUSTOMCALENDARWIDGET_H
 
 
  |