Russian Qt Forum
Ноябрь 28, 2024, 08:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDateTimeEdit без года  (Прочитано 2497 раз)
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 197


Просмотр профиля
« : Ноябрь 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)
И вся недолга. Месяц и день оставшийся виджет редактировать позволяет, ограничения на значения устанавливает грамотно...

Как считаете, нормальное решение?
« Последнее редактирование: Ноябрь 11, 2024, 22:44 от DarkHobbit » Записан

Мои проекты на Qt: DoubleContact, LInvert
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #1 : Ноябрь 12, 2024, 09:54 »

Можно задать ограничение на диапазон дат в 1 год

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

и
Цитировать
можно не заморачиваться и при отсутствии года вызвать
если так пользователю удобнее будет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 22.