背景
使用QT的日期控件(QDateTimeEdit、QDateEdit、QTimeEdit)时,它们都自带一个默认值。但是在某些情况下,我们不想要这个默认值。通过现有接口没法实现我们的需求,必须通过继承重构的方式实现。
参考链接
-
下面这篇博客给出了完整的实现代码,本文仅对该博客做简单说明
-
原博客是以QDateEdit举例,QDateTimeEdit和QTimeEdit的情况类似
代码说明
设置空值
-
在继承QDateEdit的子类内,新封装了以下这两个接口,用于设置是否允许为空,可以在创建对象时设置具体属性。
bool isNullable() const;
void setNullable(bool enable); -
新增设置空值接口:在调用该接口前,必须先调用setNullable(true)。
void setNullDatetime()
{
d->setNull(true);
}
内部实现
- 在源代码的基础上增加了是否允许为空的成员变量。每一步都判断当前是否允许为空
- 通过内部的友元类,来实现具体的空值