46.QDateTimeEdit

目录

1  简介

2  创建

2.1  普通的

2.2  带QDateTimeEdit的

2.3  带QDate的

2.4  带QTime的

3  QDateTime,QDate与QTime

3.1  QDateTime

3.1.1  构造函数

3.1.2  调整时间

3.1.3  计算时间差

3.2  QDate

3.2.1  构造函数

3.2.2  调整日期

3.2.3  计算时间差

3.2.4  获取时间

3.3  QTime

3.3.1  构造函数

3.3.2  调整时间

3.3.3  计算时间差

3.3.4  计时

3.3.5  获取时间

4  显示格式

4.1  格式符

4.1.1  日期格式

4.1.2  时间格式

4.2  设置 setDisplayFormat()

4.3  获取 displayFormat()

5  section控制

5.1  获取section个数 QDateTimeEdit()

5.2  选中指定索引的section setCurrentSectionIndex()

5.3  获取选中的section索引

5.4  选择指定含义section setCurrentSection()

5.5  获取选中的区域部分 currentSection()

5.6  获取指定索引位置的区域 sectionAt()

5.7  获取指定section的文本内容 setionText()

6  日期和时间范围

6.1  整体设置日期与时间

6.1.1  最大值

6.1.2  最小值

6.1.3  设置范围 setDateTimeRange()

6.2  只设置日期

6.3  只设置时间

7  日历选择控件

7.1  设置日历选择控件 setCalendarPopup()

7.2  获取是否弹出选择控件 calendarPopup()

8  获取日期与时间

8.1  获取日期与时间 dateTime()

8.2  只获取日期 date()

8.3  只获取时间 time()

9  信号

9.1  日期与时间有一个改变就触发的信号 dateTimeChanged()

9.2  只有日期改变时触发的信号 dateChanged()

9.3  只有时间改变时触发的信号 timeChanged()

1  简介

2  创建

有四种构造函数

  • 第一个是普通创建,只用给一个父对象
  • 第二个设置日期和时间
  • 第三个只设置日期
  • 第四个只设置时间

2.1  普通的

初始值是2020/1/1 0:00

把光标放在2000上再按一下向上按钮会加一,放到月,日,时间上再按下向上按钮都会增加数值

每一段会有最大值和最小值,比如月的最大值是12,最小值是1,默认情况下没有设置数据循环,而且当月到12时再往上调不会累加到年

这个控件最大值为9999年12月31日23:59,最小值为1752年9月14日 0:00

2.2  带QDateTimeEdit的

我们选用当前时间

2.3  带QDate的

2.4  带QTime的

3  QDateTime,QDate与QTime

3.1  QDateTime

3.1.1  构造函数

QDateTime构造函数如下

我们就测试下面这一个

我们现在使用当前时间

3.1.2  调整时间

我们再此时一下addYears()

我们发现add方法中没有加小时和分钟,这个使用加秒替代的,比如我相加20分钟,我应该加入20 * 60秒

比如我们现在使用当前时间,现在我们要加20分钟

刚才用默认初始值测试了一下,发现使用add方法无效

像addYears()这一类方法,我们也可以给一个负的参数,以达到减的效果

3.1.3  计算时间差

我们用现在的时间与标准时间做一个时间差,由于时区原因,相差8小时

返回了28800,这个的单位是秒数

发现相差8小时

3.2  QDate

3.2.1  构造函数

3.2.2  调整日期

3.2.3  计算时间差

3.2.4  获取时间

3.3  QTime

3.3.1  构造函数

3.3.2  调整时间

3.3.3  计算时间差

3.3.4  计时

这个我们搞一下

我们首先创建一个QTime(),就以当前时间为例,如果是空的也可以

之后再搞三个按钮,分别连接三个槽函数

运行之后是这样的

我们点击开始计时

之后再过一阵点击显示结果

再过一阵再点

它这个返回的结果单位是ms

我们点restart和start的效果是一样的,都是从0开始

3.3.5  获取时间

4  显示格式

4.1  格式符

4.1.1  日期格式

4.1.2  时间格式

4.2  设置 setDisplayFormat()

运行结果

窗口的尺寸是我调的,默认状态下窗口不会跟随控件大小改变大小

4.3  获取 displayFormat()

5  section控制

section是指QDateTimeEdit中显示字符串的每一个部分

5.1  获取section个数 QDateTimeEdit()

返回了整形5,说明有5个section,分别为 年 月 日 小时 分钟

5.2  选中指定索引的section setCurrentSectionIndex()

我们搞一个按钮连接这个槽函数

如果把焦点放到后面选中的后面,会重置选中的区域

此时我们选中的2号section

运行之后我们点击一下按钮

现在我们按一下上箭头

发现2号位涨了一个步长

5.3  获取选中的section索引

我们搞一个按钮,搞一个槽函数

运行后我们点击获取section索引按钮

5.4  选择指定含义section setCurrentSection()

参数为QDateTimeEdit.Section,可填入的参数如下

  • QDateTimeEdit.NoSection 不选择区域
  • QDateTimeEdit.AmPmSection 选择上下午区域
  • QDateTimeEdit.MSecSection 选择毫秒区域
  • QDateTimeEdit.SecondSection 选择秒区域
  • QDateTimeEdit.MinuteSection 选择分钟区域
  • QDateTimeEdit.HourSection 选择时间区域
  • QDateTimeEdit.DaySection 选择日区域
  • QDateTimeEdit.MonthSection 选择月区域
  • QDateTimeEdit.YearSection 选择年区域

我们搞一个按钮,再搞一个槽函数

此时我们选择月份区域

运行之后点击一下按钮

5.5  获取选中的区域部分 currentSection()

搞一个按钮和槽函数

它返回的是一个int类型的枚举值,我们依次选择分钟,小时,日,月,年,然后每次选中后都点一下按钮

  • 8 秒的位置
  • 16 小时的位置
  • 256 日的位置
  • 512 月的位置
  • 1024 年的位置

5.6  获取指定索引位置的区域 sectionAt()

搞一个按钮与槽函数

我们现在获取 日 的位置

运行后直接点击一下按钮

5.7  获取指定section的文本内容 setionText()

为了能让按钮放得开,我们拉大窗口

然后再搞一个按钮,一个槽函数

运行之后直接点一下按钮

获取到了 日 区域的内容

6  日期和时间范围

6.1  整体设置日期与时间

首先我们需要创建两个QDateTime对象作为最大值与最小值

我们以当前时间作为最大值,以当前时间的两年前作为最小值

6.1.1  最大值

6.1.1.1  设置最大值 setMaximumDateTime()

运行至最大值后手动输入当前时间,之后再点击向上按钮,点完之后发现数值上不去了

6.1.1.2  获取最大值 maximumDateTime()

6.1.1.3  清空设置的最大值 clearMaximumDateTime()

此时可以发现可以超出刚刚设置的最大值

6.1.2  最小值

6.1.2.1  设置最小值 setMinimumDateTime()

运行之后直接显示了最小值

点击向下按钮后,不能使数值变小

6.1.2.2  获取最小值 minimumDateTime()

6.1.2.3  清空设置的最小值 clearMinmumDateTime()

由于设置了最小值,所以起始状态还是设定的最小值

此时按一下向下按钮,发现可以突破刚刚设置的最小值

6.1.3  设置范围 setDateTimeRange()

运行之后显示设置的最小值

此时按下按钮,不能调整数值

可以输入设置的最大值

此时按向上按钮,不能调整数值

设置好同样可以获取最大值与最小值

6.2  只设置日期

与上方整体设置方法相同,参数更改为QDate

6.3  只设置时间

与上方整体设置方法相同,参数更改为QTime

7  日历选择控件

7.1  设置日历选择控件 setCalendarPopup()

设置为True后,我们显示的状态是这样的

我们点一下右侧的下拉菜单

会出现日历选择控件

7.2  获取是否弹出选择控件 calendarPopup()

下面这两个由于要创建QCalendarWidget控件,我们放到后面去讲

  • 设置自定义的日历控件 setCalendarWidget()
  • 获取自定义的日历控件 calendarWidget()

8  获取日期与时间

我们就使用初始值进行获取

8.1  获取日期与时间 dateTime()

8.2  只获取日期 date()

8.3  只获取时间 time()

我们发现以上返回的都为时间日期的对象,我们可以通过本章第二节的内容对其进行操作

9  信号

section完全编辑完毕是触发以上三个信号的先决条件

9.1  日期与时间有一个改变就触发的信号 dateTimeChanged()

可传入改变后的QDateTime对象

为了简洁,我们使用lambda直接来搞

运行后我们点击一下向上按钮

9.2  只有日期改变时触发的信号 dateChanged()

运行后我们点击一下向上按钮

9.3  只有时间改变时触发的信号 timeChanged()

运行后将光标移动到时间区域

按一下向上按钮

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值