通过覆盖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?或者我可以选择禁用手动输入吗?
答案 0 :(得分:1)
您可以使用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);
}