我已经扩展了QDateTimeEdit
,通过覆盖stepBy(int steps)
来每隔15分钟执行一步。因此,如果用户向上滚动分钟部分,他们只能选择0、15、30和45。
如果用户手动输入dateTime,就会出现一个问题,因为这样就不会进行验证。我仔细看了一下:https://qt.gitorious.org/qt/qt/source/57756e72adf2081137b97f0e689dd16c770d10b1:src/gui/widgets/qdatetimeedit.cpp
但老实说,dateTimeFromText
方法有点让人不知所措。
我还发现:http://qt-project.org/doc/qt-5/qt.html#InputMethodHint-enum,但仍然不确定这是否有任何帮助。
有没有什么简单的方法可以只允许dateTimes
的分钟数为0、15、30或45?或者我可以禁用手动输入吗?
您可以使用dateTimeChanged插槽手动控制输入是否可以被15整除。此外,您还可以使用最接近的允许值之一更新元素。
if (dateTime.time().minute()%15 != 0) {
QTime t(dateTime.time().hour(),dateTime.time().minute()-dateTime.time().minute()%15,dateTime.time().second());
ui->dateTimeEdit->setTime(t);
}