QDateTimeEdit

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <QApplication>
#include <QWidget>
#include <QDateTimeEdit>
#include <QVBoxLayout>
#include <QLabel>
#include <QDateTime>
#include <QDebug>

void setupDateTimeEditDemo(QWidget *parent) {
QVBoxLayout *layout = new QVBoxLayout(parent);

// --- 1. 基础日期时间框 ---
QLabel *label1 = new QLabel("选择出发时间(默认格式):", parent);
QDateTimeEdit *dateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(), parent);
dateTimeEdit->setCalendarPopup(true); // 💡 绝招:开启后点击下拉会弹出一个日历选择器

// --- 2. 自定义格式日期框 ---
QLabel *label2 = new QLabel("自定义格式(YYYY年MM月DD日):", parent);
QDateTimeEdit *customEdit = new QDateTimeEdit(QDate::currentDate(), parent);
// yyyy-MM-dd HH:mm:ss 是标准写法
customEdit->setDisplayFormat("yyyy年MM月dd日 HH:mm");

// 设置时间范围限制:不能选今天以前的时间
customEdit->setMinimumDateTime(QDateTime::currentDateTime());

// --- 3. 实时显示结果的 Label ---
QLabel *displayLabel = new QLabel("你选择的时间是:", parent);
displayLabel->setStyleSheet("color: darkgreen;");

// --- 4. 信号:dateTimeChanged ---
QObject::connect(customEdit, &QDateTimeEdit::dateTimeChanged, [displayLabel](const QDateTime &dt) {
// 将选中的时间转换成字符串显示
displayLabel->setText("你选择的时间是:" + dt.toString("yyyy-MM-dd HH:mm"));
});

layout->addWidget(label1);
layout->addWidget(dateTimeEdit);
layout->addSpacing(10);
layout->addWidget(label2);
layout->addWidget(customEdit);
layout->addWidget(displayLabel);
layout->addStretch();
}

int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QWidget w;
w.setWindowTitle("QDateTimeEdit 时间选择测试");
w.resize(400, 300);
setupDateTimeEditDemo(&w);
w.show();
return a.exec();
}