2.7 时间日期与定时器
2.7.1 时间日期相关的类
时间日期是经常遇到的数据类型,Qt中时间日期类型的 类如下:
- QTime ,时间数据类型, 仅表示时间, 如 18:08:08。
- QDate, 日期数据类型, 仅表示日期, 如2023-7- 21。
- QDateTime ,日期时间数据类型,表示日期和时 间, 如2023-07-21 18:08:08。
QT中有专门用于日期、时间编辑和显示的界面组件,如 下:
- QTimeEdit, 编辑显示时间的组件。
- QDateEdit, 编辑和显示日期的组件。
- QDateTimeEdit, 编辑和显示日期时间的组件。
- QCalendarWidget, 一个用日历形式选择日期日期的 组件。
定时器是用来处理周期性事件的一种对象,类似于硬件 定时器。例如设置一个定时器的定时周期为1000毫秒, 那么每1000毫秒就会发射定时器的timeout()信号,在 信号关联的槽函数里就可以做相应的处理。Qt中的定时 器类为QTimer,它直接从QObject类继承而来,不是界面 组件类。
2.7.2 日期时间数据与字符串之间的 转换
设计如下图所示对话框
QDateEdit和QTimeEdit都从QDateTimeEdit继承而 来,实现针对日期或时间的特定显示功能。实际上 QDateEdit和QTimeEdit的显示功能都可以通过 QDateTimeEdit实现,只需要设置好属性即可。
时间日期转字符串的函数:
QString QDateTime::toString(const QString &format) const
设置“读取当前日期时间”按钮对应的槽函数
#include "widget.h"
#include "ui_widget.h"
#include <QDateTime>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
// 初始化界面
ui->setupUi(this);
}
Widget::~Widget()
{
// 释放ui指针
delete ui;
}
void Widget::on_pushButton_set_data_time_2_clicked()
{
// 获取当前日期时间
QDateTime curDateTime = QDateTime::currentDateTime();
// 设置时间编辑框的时间为当前时间
ui->timeEdit->setTime(curDateTime.time());
// 将当前时间格式化为字符串,设置到文本编辑框中
ui->lineEdit_time->setText(curDateTime.toString("hh:mm:ss"));
// 设置日期编辑框的日期为当前日期
ui->dateEdit->setDate(curDateTime.date());
// 将当前日期格式化为字符串,设置到文本编辑框中
ui->lineEdit_data->setText(curDateTime.toString("yyyy-MM-dd"));
// 设置日期时间编辑框的日期和时间为当前日期时间
ui->dateTimeEdit->setDateTime(curDateTime);
// 将当前日期时间格式化为字符串,设置到文本编辑框中
ui->lineEdit_data_time->setText(curDateTime.toString("yyyy-MM-dd hh:mm:ss"))