龙空技术网

从零开始学Qt(31):时间日期组件的使用

未来奇兵 163

前言:

眼前兄弟们对“aspnettextbox日期”可能比较重视,同学们都需要剖析一些“aspnettextbox日期”的相关资讯。那么小编同时在网络上搜集了一些有关“aspnettextbox日期””的相关文章,希望我们能喜欢,同学们一起来学习一下吧!

时间日期数据类型

时间日期是经常遇到的数据类型,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);}

标签: #aspnettextbox日期 #js时间赋值 #日期选择器组件起止时间为本月1号至次月15号