日期微调框QDateTimeEdit
QDateTimeEdit
是一个日期微调框控件,它可以选择年月日和时分。
Qt 中还有
QDateEdit
只能微调年月日的控件和QTimeEdit
只能微调时分的控件。
QDateTimeEdit属性
属性 | 说明 |
---|---|
dateTime | 时间和日期的值。 |
date | 仅是日期的值。 |
time | 仅是时间的值。 |
displayFormat | 时间日期的格式。y 表示年份。M 表示月份。H 表示小时。m 表示分钟。s 表示秒。 |
minimumDateTime | 最小时间日期。 |
maximumDateTime | 最大时间日期。 |
timeSpec | Qt::LocalTime 显示本地时间。Qt::UTC 显示世界时(UTC)。Qt::OffsetFromUTC 显示相对于 UTC 的偏移量(时差)。 |
QDateTimeEdit信号
信号 | 说明 |
---|---|
dateChanged(QDate) | 日期改变时触发。 |
timeChanged(QTime) | 时间改变时触发。 |
dateTimeChanged(QDateTi me) | 时间日期任意一个改变时触发。 |
计算两个QDateTimeEdit的时间差
将两个 QDateTimeEdit
的时间分别用两个 QDateTime
类型的变量保存起来,再调用 daysTo()
(计算两个日期的天数)或 secsTo()
(计算两个日期的秒数),来获取时间的差值:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QDateTime old_time=ui->dateTimeEdit->dateTime();QDateTime new_time=ui->dateTimeEdit_2->dateTime();int days =old_time.daysTo(new_time);QString content;content="已经过去了:"+QString::number(days)+"天";ui->label->setText(content);
}
注意
daysTo()
这个接口会把不满一天的时间也算为一天,如2024/12/21 22:00
到2024/12/22:00
也会被计算成过去一天。要想要精确地计算时间,可以使用secsTo()
获取秒数后自行书写代码逻辑。