目录
1.时间日期相关的类
时间日期是经常遇到的数据类型,Qt中时间日期类型的类如下。
-
QTime:时间数据类型,仅表示时间,如巧:23:13。
-
QDate:日期数据类型,仅表示日期,如2017一4巧。
-
QDateTime:日期时间数据类型,表示日期和时间,如2017.03一2308:12:43。
Qt中有专门用于日期、时间编辑和显示的界面组件,介绍如下。
-
QTimeEdit:编辑和显示时间的组件。
-
QDateEdit:编辑和显示日期的组件。
-
QDateTimeEdit:编辑和显示日期时间的组件。
-
QCaIendarWidget:一个用日历形式选择日期的组件。
定时器类是QTimer:
定时器是用来处理周期性事件的一种对象,类似于硬件定时器。例如设置一个定时器的定时
周期为1000亳秒,那么每1000毫秒就会发射定时器的timeout()信号,在信号关联的槽函数里就
可以做相应的处理。Qt中的定时器类是QTimer,它直接从QObject类继承而来,不是界面组件类。
2.日期时间数据与字符串之间的转换
2.1 时间、日期编辑器属性设置
QDateEdit和QTimeEdit都从QDateTimeEdit继承而来,实现针对日期或时间的特定显示功
能。实际上,QDateEdit和QTimeEdit的显示功能都可以通过QDateTimeEdit实现,只需设置好
属性即可。
QDateTimeEdit类的主要属性的介绍如下。
-
datetime:日期时间。
-
date:日期,设置datetime时会自动改变date,同样,设置date时,也会自动改变datetime
-
里的日期。
-
time:时间,设置datetime时会自动改变time,同样,设置time时,也会自动改变datetime
-
里的时间。
-
maximumDateTime、minimumDateTime:最大、最小日期时间。
-
maximumDate、minimumDate:」最丿(、最刁、日其月。
-
maximumTime、minimumTime:最大、最小时间。
-
currentsection:当前输入光标所在的时间日期数据段,是枚举类型QDateTimeEdit::Section。
QDateTimeEdit显示日期时间数据时分为多个段,单击编辑框右侧的上下按钮可修改当前段的 值。如输入光标在Yearsection段,就修改“年”的值。
-
currentsectionlndex:用序号表示的输入光标所在的段。
-
calendarPopup:是否允许弹出一个日历选择框。当取值为true时,右侧的输入按钮变成与
-
QComboBox类似的下拉按钮,单击按钮时出现一个日历选择框,用于在日历上选择日期。对于QTimeEdit,此属性无效。
-
displayFormat:显示格式,日期时间数据的显示格式,例如设置为“yyyy-MM-dd HH:mm:ss”,一个日期时间数据就显示为“2016-11-02 08:23:46”。
2.2 日期时间数据的获取与转换为字符串
void Dialog::on_btnGetTime_clicked()
{
//获取当前日期时间,为三个专用编辑器设置日期时间数据,并转换为字符串
QDateTime curDateTime=QDateTime::currentDateTime(); //读取当前日期时间
ui->timeEdit->setTime(curDateTime.time()); //设置时间
ui->editTime->setText(curDateTime.toString("hh:mm:ss"));//转换为字符串显示
ui->dateEdit->setDate(curDateTime.date());//设置日期
ui->editDate->setText(curDateTime.toString("yyyy-MM-dd"));//转换为字符串显示
ui->dateTimeEdit->setDateTime(curDateTime);//设置日期时间
ui->editDateTime->setText(curDateTime.toString("yyyy-MM-dd hh:mm:ss"));//转换为字符串显示
}
QDateTIME::toString()函数的函数原型是:
QString QDateTime::toString(const QString &format) const
它将日期时间数据按照format指定的格式转换为字符串。format是一个字符串,包含一些特
定的字符,表示日期或时间的各个部分,表4-2是用于日期时间显示的常用格式符。
在设置日期时间显示字符串格式时,还可以使用填字符,甚至使用汉字。例如,日期显示格
式可以设置为:curDateTime.toString("yyyy年MM月dd日");这样得到的字符串是“2016年11月21日”。