calendardtedit.h 1.4 KB

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