Qt:QDateTimeEdit

0、说明

QDateTimeEdit类提供了一个用于编辑DateTimeWidget,它就像下边这样

 

 

 

 

 

QDateTimeEdit允许用户使用键盘编辑Date、或者用方向键来增加或减少Date、Time的值。Date、Time的显示格式由setDisplayFormat()进行设置:

 

QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());
dateEdit->setMinimumDate(QDate::currentDate().addDays(-365));
dateEdit->setMaximumDate(QDate::currentDate().addDays(365));
dateEdit->setDisplayFormat("yyyy.MM.dd");

 

上文中,我们用今天的Date构造了一个QDateTimeEdit对象,并且限制了日期的范围为今天±365天,之后,我们设置了年月日的顺序。

1)使用弹出式日历Widget

QDateTimeEdit允许使用QCalendarWidget来选择日期,通过设置calendarPopup属性完成。除此之外,我们可以用setCalendarWidget()来定制一个特殊的弹出式日历。已经存在的日历Widget可以用calendarWidget()提取。

2)键盘追踪

当启用了keyboard tracking(默认情况下是启用的),每次敲击键盘修改某个字段值时都会发送一个信号,标识了数值更改。

当限制了日期的范围而通过键盘编辑某个字段会导致超出该范围,那么这次编辑就会被阻止。

当禁用了keyboard tracking,那么只有当键盘焦点离开该文本字段字段后才会显示修改。这允许用户通过编辑一个无效的Date-Time来实现一个有效的Date-Time。

 

1、模块和加载项

Header: #include <QDateTimeEdit>
qmake: QT += widgets
Inherits: QAbstractSpinBox
Inherited By:

QDateEdit and QTimeEdit

2、构造

QDateTimeEdit(QTime time, QWidget *parent = nullptr) 在parent下构造一个空DateTime Editor,其值设置为time
QDateTimeEdit(QDate date, QWidget *parent = nullptr) 在parent下构造一个空DateTime Editor,其值设置为date
QDateTimeEdit(QDateTime datetime, QWidget *parent = nullptr) 在parent下构造一个空DateTime Editor,其值设置为datetime
QDateTimeEdit(QWidget *parent = nullptr) 在parent下构造一个空DateTime Editor

 

3、静态字段

enum

Section { NoSection, AmPmSection, MSecSection,

SecondSection, MinuteSection, …, YearSection }

这里的Section是QFlags<Section>的typedef(别名)。

其中存储了一些Section值的OR组合。

一个Section就是实际显示时的一个字段,比如显示格式为'yyyy/yy/yyyy',那么Section数目就为3

flags Sections

 

4、实例字段

字段名

类型

说明

getter、setter

信号、槽

calendarPopup bool 是否允许以日历形式选择日期

calendarPopup()

setCalendarPopup(bool enable)

 
currentSection Section

当前Section。

Section是指当光标位于的字段。

currentSection()

setCurrentSection(QDateTimeEdit::Section section)

 
currentSectionIndex int

当前Section的位置索引。

比如当前Section在第二个字段处,那么该值就是1

currentSectionIndex()

 

 
date QDate 当前的QDate

date()

setDate(const QDate &date)

dateChanged(const QDate &date)
dateTime QDateTime 当前的QDateTime

dateTime() 

setDateTime(const QDateTime &dateTime)

dateTimeChanged(const QDateTime &datetime)
displayFormat QString

展示出来的字符串格式。

格式见

QDateTime::toString() 和QDateTime::fromString()

displayFormat()

setDisplayFormat(const QString &format)

 
displayedSections Sections 当前展示的Section displayedSections()  
maximumDate QDate 最大Date

maximumDate()

setMaximumDate(const QDate &max)

clearMaximumDate()

 

 
maximumDateTime QDateTime 最大DateTime
QDateTime maximumDateTime() const
void setMaximumDateTime(const QDateTime &dt)
void clearMaximumDateTime()
 
maximumTime QTime 最大Time
QTime maximumTime() const
void setMaximumTime(const QTime &max)
void clearMaximumTime()

 

 
minimumDate QDate 最小Date
QDate minimumDate() const
void setMinimumDate(const QDate &min)
void clearMinimumDate()
 
minimumDateTime QDateTime 最小DateTime
QDateTime minimumDateTime() const
void setMinimumDateTime(const QDateTime &dt)
void clearMinimumDateTime()

 

 
minimumTime QTime 最小Time
QTime minimumTime() const
void setMinimumTime(const QTime &min)
void clearMinimumTime()
 
sectionCount int 一共几个Section sectionCount()  
time QTime 当前Time

time()

setTime(const QTime &time)

timeChanged(const QTime &time)
timeSpec Qt::TimeSpec 当前TimeSpec

timeSpec()

setTimeSpec(Qt::TimeSpec spec)

 

 

6、实例方法

7、信号

dateChanged(QDate date)  
dateTimeChanged(QDateTime datetime)  
timeChanged(QTime time)  

 

8、槽

setDate(QDate date)  
setDateTime(QDateTime dateTime)  
setTime(QTime time)  
posted @   ShineLe  阅读(1766)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示