Добрый день.
Я сейчас добавляю в свой проект поддержку редактирования дней рождения, у которых есть только месяц и день, но поддержку дат с годом тоже надо сохранить.
Взял стандартный QDateTimeEdit.
C
QDateTimeEdit *editor;
...
editor->setDisplayFormat("dd.MM");
При этом, как и ожидал, показываются только секции дня и месяца. Если же пользователь явно указывает, что год есть, я вызываю
C
editor->setDisplayFormat("dd.MM.yyyy");
И восстанавливаю полный вид. Казалось бы всё хорошо...
Но если нажать на кнопочку календаря, календарь всё равно вылезает с годом, и его можно редактировать, что будет сбивать людей с толку. Указание, что года нет, должно быть явным. Собственно, это нужно для редактирования контактов формата vCard, где подобные даты сохраняются в виде
P.S. Пока описывал проблему, подумал, что для дат без года этот календарь вообще смысла не имеет. И что можно не заморачиваться и при отсутствии года вызвать
C
setCalendarPopup(false)
И вся недолга. Месяц и день оставшийся виджет редактировать позволяет, ограничения на значения устанавливает грамотно...
Как считаете, нормальное решение?