头文件:
#ifndef QBASEDATEEDIT_H
#define QBASEDATEEDIT_H
#include <QDateEdit>
class QBaseDateEdit : public QDateEdit
{
public:
explicit QBaseDateEdit(QWidget* parent = nullptr);
explicit QBaseDateEdit(const QDate& date, QWidget* parent = nullptr);
~QBaseDateEdit();
/// @brief 设置日期时间为空
void setNull();
/// @brief 判断日期时间是否为空
bool isNull();
/// @brief 根据设置的格式使用字符串设置日期时间;如果字符串为空,则日期时间为空
void setDateTimeStr(const QString& dateTimeStr);
/// @brief 根据设置的格式获取日期时间字符串;如果日期时间为空,则字符串为空
QString getDateTimeStr();
private:
void initControl();
QValidator::State validate(QString& input, int& pos) const override;
virtual QString textFromDateTime(const QDateTime& dt) const;
void keyPressEvent(QKeyEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
private slots:
void slots_clicked(const QDate& date);
private:
QDate minDate;
};
#endif //