时间日期数据类型时间日期是经常遇到的数据类型,Qt中时间日期类型的类如下。QTime:时间数据类型,仅表示时间,如15:23:13。QDate:日期数据类型,仅表示日期,如2017-4-5。QDateTime:日期时间数据类型,表示日期和时间,如2017-03-23 08:12:43。时间日期转换为字符串使用QDateTime的toString()函数,分别用不同的格式显示时间、日期、日期时间。toString()的函数原型是:
QString QDateTime::toString(const QString &format) const
它将日期时间数据按照format指定的格式转换为字符串。format是一个字符串,包含一些特定的字符,表示日期或时间的各个部分,下图是用于日期时间显示的常用格式符。在设置日期时间显示字符串格式时,还可以使用填字符,甚至使用汉字。例如,日期显示格式可以设置为:toString ("yyyy年MM月dd日"),这样得到的字符串格式是“2023年03月15日”。同样的,也可以将字符串转换为QTime、QDate或QDateTime类型,使用静态函数QDateTime::fromString(),其函数原型为:
QDateTime QDateTime::fromString(const QString &string, const QString &format)
其中,第1个参数string是日期时间字符串形式,第2个参数format是字符串表示的格式。时间日期界面组件Qt中有专门用于日期、时间编辑和显示的界面组件,介绍如下。QTimeEdit:编辑和显示时间的组件。QDateEdit:编辑和显示日期的组件。QDateTimeEdit:编辑和显示日期时间的组件。QCalendarWidget:一个用日历形式选择日期的组件。QDateEdit和QTimeEdit都从QDateTimeEdit继承而来,实现针对日期或时间的特定显示功 能。实际上,QDateEdit和QTimeEdit的显示功能都可以通过QDateTimeEdit实现,只需设置好属性即可。QDateTimeEdit类的主要属性的介绍如下。示例在图中窗体左上方的“日期时间”中,使用QTimeEdit、QDateEdit、QDateTimeEdit组件作为时间、日期、日期时间编辑器;在其下方,放置一个QLineEdit组件用于字符串显示日期时间。界面如下图。1. 日期时间数据的获取与转换为字符串“读取当前日期时间”按钮的clicked()信号的槽函数代码如下:
void Widget::on_btnGetTime_clicked(){ QDateTime curDateTime=QDateTime::currentDateTime(); ui->timeEdit->setTime(curDateTime.time()); ui->dateEdit->setDate(curDateTime.date()); ui->dateTimeEdit->setDateTime(curDateTime); ui->edtDateTime->setText (curDateTime.toString("yyyy-MM-dd hh:mm:ss"));}
首先用QDateTime类的静态函数currentDateTime()获取当前日期时间,并赋值给变量curDateTime。然后用curDateTime变量设置界面上3个日期、时间编辑器的时间或日期值,利用了 QDateTime的time()和date()分别提取时间和日期。最后,将curDateTime表示的日期时间数据转换为字符串然后在LineEdit编辑框上显示。2. 字符串转换为日期时间在程序运行时,手工修改“字符串显示”后面文本框里的日期时间字符串,单击“设置日期时间”按钮,可以将文本框里的字符串转换为QDateTime变量,并设置为组件的日期时间数据,代码如下:
void Widget::on_btnSetTime_clicked(){ QString str=ui->edtDateTime->text(); str=str.trimmed(); if(!str.isEmpty()) { QDateTime datetime=QDateTime::fromString(str,"yyyy-MM-dd hh:mm:ss"); ui->timeEdit->setTime(datetime.time()); ui->dateEdit->setDate(datetime.date()); ui->dateTimeEdit->setDateTime(datetime); }}
3. QCalendarWidget日历组件图中窗体右侧是一个QCalendarWidget组件,它以日历的形式显示日期,可以用于日期选择。QCalendarWidget有一个信号selectionChanged(),在日历上选择的日期变化后会发射此信号,为此信号创建槽函数,编写代码如下:
void Widget::on_calendarWidget_selectionChanged(){ QDate dt=ui->calendarWidget->selectedDate(); QString str=dt.toString("yyyy年M月d日"); ui->edtCalender->setText(str);}
0 评论