如何将dateTimeFromText更改为仅允许分钟%15或禁用手动文本输入?

时间:2014-10-25 08:16:21

标签: c++ qt qt5 qdatetime

通过覆盖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?或者我可以选择禁用手动输入吗?

1 个答案:

答案 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);
}