0

QDateTimeEdit通过覆盖扩展了以 15 分钟为间隔执行的步骤stepBy(int steps)。因此,如果用户向上滚动分钟部分,他们唯一的选择是 0、15、30 和 45。

如果用户手动输入日期时间,则会出现一个问题,因为这样就不会发生验证。我仔细看了看: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?或者我可以禁用手动输入吗?

4

1 回答 1

0

您可以使用 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);
}
于 2014-10-25T08:51:41.127 回答