Как изменить dateTimeFromText, чтобы разрешить только минуты% 15 или отключить ручной ввод текста?

Я продлил 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? Или я могу альтернативно отключить ручной ввод?

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);
}
1

Другие решения


По вопросам рекламы [email protected]