Я продлил QDateTimeEdit
делать шаги с интервалом в 15 минут, перезаписывая stepBy(int steps)
, Таким образом, если пользователь прокручивает секцию минут, единственные варианты, которые у него есть, это 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);
}