前些天遇到需要将日期控件默认显示为空的需求,通过测试发现,设置空字符或者空对象都是无用的,有以下两种方法解决:
一、 通过子类化QDateEdit/QDateTimeEdit,重写控件逻辑的方式去实现,稍微有些麻烦
这种方式互联网上资料很多,自行搜索就好,我们主要讲第二种方法
二、一种取巧的方法,通过设置特殊字符
ui->dateEdit->setSpecialValueText(" ");
ui->dateEdit->setMinimumDate(QDate(1900, 1, 1));
ui->dateEdit->setDate(QDate::fromString("0001-01-01", "yyyy-MM-dd"));
ui->dateEdit->setFocusPolicy(Qt::NoFocus);
- 第一行设置肉眼看不见的空格为特殊字符
- 第二行设置允许的最小日期
- 第三行设置一个低于最小日期的 QDate
- 第四行是为了不让光标在控件上跳动
效果如图:
实际上这种方式有细节上的不足,如果你选中控件会发现特殊字符的存在:
对细节没有太多要求的话可以选择这种方式。