Мои приветствия.
В Qt (а стало быть и в обвязках PyQt&PySide) есть такая хорошая вещь как QtGui.QDateTimeEdit, позволяющая вводить дату и выбирать ее с помощью выпадающего календарика. Виджет мощный, но не без изъяна: нет возможности обрабатывать null-значения. Таким образом виджет нельзя использовать в формах где дата является полем необязательным — необходимо или признавать некую ненулевую дату (например, 01.01.1999 00:00) датой при вводе которой поле считается неозначенным, или не использовать этот виджет.
Видится два решения: хакать виджет, используя какие-либо лазейки вроде установки текстового значения поля напрямую, минуя валидаторы или писать свой виджет, повторяя функционал имеющегося с точностью приемлемой в проекте.
С хаком не помогли следующие способы:
- widget.lineEdit().setText("")
- widget.setSpecialValueText(«необязательное поле»)
- widget.clear()
В варианте с наследованием от QComboBox лично мне неясно как прикрутить календарь в выпадающий popup куда отлично прикручиваются различные представления вроде деревьев и пр.
Наследоваться от QLineEdit мешает осознание, что придется реализовывать виджет с нуля вообще, что означает не только форматироование и валидацию, но и заботу о кординированной работе виджетов ввода и календаря: ресайз, позицирование, показ/сокрытие календаря и пр.
Вопрос: как хабросообщество решило это проблему?