calendardtedit.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef CALENDARDTEDIT_H
  2. #define CALENDARDTEDIT_H
  3. #include <QWidget>
  4. #include <QDateTimeEdit>
  5. /*
  6. 这个是使用的类
  7. 需要设置这个属性,qss设置的图标才会生效 setCalendarPopup(true);
  8. */
  9. class CalendarDTEdit : public QDateTimeEdit
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit CalendarDTEdit(QWidget *parent = nullptr);
  14. virtual ~CalendarDTEdit();
  15. void SetCalendarAutoClose(bool value);
  16. void CloseCalendar();
  17. /* 手动触发日期选择弹框 */
  18. void triggerCalendarPopup();
  19. /* 设置手动禁止修改日期区域,只能使用弹窗,第二个参数设置点击日期是否会出现日期选择弹框 */
  20. void setManualDisableEdit(bool value, bool triggerPopup = false);
  21. /* 设置禁用日期选择器 */
  22. void setCalendarEnabled(bool value);
  23. /* 设置QSS */
  24. void setQSS();
  25. signals:
  26. void sig_SetCurrentPage(int year, int month);
  27. protected:
  28. /* 这里使用事件来处理hover样式,样式表的hover不生效,只能手动处理了 */
  29. /* 鼠标进入离开事件 */
  30. void enterEvent(QEvent* event) override;
  31. /* 鼠标离开事件 */
  32. void leaveEvent(QEvent* event) override;
  33. void mousePressEvent(QMouseEvent* e) override;
  34. bool eventFilter(QObject* watched, QEvent* event) override;
  35. private:
  36. QObject* m_pCalendar = nullptr;
  37. bool m_isPopup = false;
  38. bool m_isEnableCalendar = true;
  39. };
  40. #endif // CALENDARDTEDIT_H