Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: DarkHobbit от Ноябрь 11, 2024, 22:40



Название: QDateTimeEdit без года
Отправлено: DarkHobbit от Ноябрь 11, 2024, 22:40
Добрый день.
Я сейчас добавляю в свой проект поддержку редактирования дней рождения, у которых есть только месяц и день, но поддержку дат с годом тоже надо сохранить.
Взял стандартный QDateTimeEdit.
Код
C
QDateTimeEdit *editor;
...
editor->setDisplayFormat("dd.MM");
При этом, как и ожидал, показываются только секции дня и месяца. Если же пользователь явно указывает, что год есть, я вызываю
Код
C
editor->setDisplayFormat("dd.MM.yyyy");
И восстанавливаю полный вид. Казалось бы всё хорошо...
Но если нажать на кнопочку календаря, календарь всё равно вылезает с годом, и его можно редактировать, что будет сбивать людей с толку. Указание, что года нет, должно быть явным. Собственно, это нужно для редактирования контактов формата vCard, где подобные даты сохраняются в виде
Код:
BDAY:--0412

P.S. Пока описывал проблему, подумал, что для дат без года этот календарь вообще смысла не имеет. И что можно не заморачиваться и при отсутствии года вызвать
Код
C
setCalendarPopup(false)
И вся недолга. Месяц и день оставшийся виджет редактировать позволяет, ограничения на значения устанавливает грамотно...

Как считаете, нормальное решение?


Название: Re: QDateTimeEdit без года
Отправлено: ssoft от Ноябрь 12, 2024, 09:54
Можно задать ограничение на диапазон дат в 1 год

Код
C++ (Qt)
calendar->setDateRange(min, max);
 

и
Цитировать
можно не заморачиваться и при отсутствии года вызвать
если так пользователю удобнее будет.