PyQt5 实现可空值的 QDateTimeEdit
QDateTimeEdit
默认不允许为空,也就是不能存放空串 。网上搜寻了很久始终没找到答案,自行研究下,发现重写两个方法可以实现可空值的 QDateTimeEdit
:
复制代码
知道这两个方法的作用后开始一顿骚操作:
复制代码
就这么简单!随后你会惊奇的发现,如果初始化后不设置时间 ( `setDate` 、`setDateTime` ... 等方法 ) 的话,点击 **步进按钮** 或 **弹出日历按钮** 时,居然没有文本显示了?莫慌,只要再重写 `mousePressEvent` 方法:
复制代码
即可!如果设置了 setCalendarPopup(True)
,并且要求在弹出日历时先不设置文本,而是等选择了日历的时间后再设置,则需要额外定制。具体我说一下思路,可以根据需求微调。
因为设置 calendarWidget
的时间时 QDateTimeEdit
的文本也会跟着改变,反之也是如此 ( calendarWidget
时间也会随着 QDateTimeEdit
变化 ) 。可以在 mousePressEvent
方法中阻止 calendarWidget
发射信号,为其设置上指定的日期后,再解除阻止。然后在连接了 calendarWidget
的信号方法 ( selectionChanged
、clicked
... 等) 中自行设置 QDateTimeEdit
的显示内容。为保证信号只连接一次 ,可以重写 setCalendarPopup
方法:
复制代码
另附上便捷设置 QDateTimeEdit
时间的方法:
复制代码
评论