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











评论