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

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


person Community    schedule 25.10.2014    source источник
comment
Вы забыли о своем последнем вопросе? Почему вы не можете использовать решение из моего ответа: stackoverflow.com/questions/26451420/   -  person Kosovan    schedule 25.10.2014
comment
Нет, я этого не сделал. И нет, я не могу. Это недостаточное подтверждение. Я изучаю qt и c++, поэтому я стремлюсь достичь большего и большего;) Если я не могу найти решение, я спрашиваю, не сталкивался ли кто-нибудь с такой же проблемой. Кроме того, я проголосовал за ваш ответ, но мне этого недостаточно.   -  person    schedule 25.10.2014


Ответы (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);
}
person ahaltindis    schedule 25.10.2014