通过QtCreator,在C:\Users\Minwei\Projects\Qt路径下,创建名为DateTime的项目。
C:\Users\Minwei\Projects\Qt\DateTime\datetimedialog.ui:
xxxxxxxxxx
981
2<ui version="4.0">
3 <class>DateTimeDialog</class>
4 <widget class="QDialog" name="DateTimeDialog">
5 <property name="geometry">
6 <rect>
7 <x>0</x>
8 <y>0</y>
9 <width>308</width>
10 <height>350</height>
11 </rect>
12 </property>
13 <property name="windowTitle">
14 <string>日期和时间</string>
15 </property>
16 <layout class="QVBoxLayout" name="m_layoutVer">
17 <item>
18 <layout class="QGridLayout" name="m_layoutGrid">
19 <item row="0" column="0">
20 <widget class="QDateEdit" name="m_dateEdit">
21 <property name="displayFormat">
22 <string>yyyy-MM-dd</string>
23 </property>
24 </widget>
25 </item>
26 <item row="0" column="1">
27 <widget class="QLineEdit" name="m_editDate"/>
28 </item>
29 <item row="1" column="0">
30 <widget class="QTimeEdit" name="m_timeEdit">
31 <property name="displayFormat">
32 <string>HH:mm:ss</string>
33 </property>
34 </widget>
35 </item>
36 <item row="1" column="1">
37 <widget class="QLineEdit" name="m_editTime"/>
38 </item>
39 <item row="2" column="0">
40 <widget class="QDateTimeEdit" name="m_dateTimeEdit">
41 <property name="displayFormat">
42 <string>yyyy-MM-dd HH:mm:ss</string>
43 </property>
44 </widget>
45 </item>
46 <item row="2" column="1">
47 <widget class="QLineEdit" name="m_editDateTime"/>
48 </item>
49 <item row="3" column="0">
50 <widget class="QPushButton" name="m_btnGet">
51 <property name="text">
52 <string>获取</string>
53 </property>
54 </widget>
55 </item>
56 <item row="3" column="1">
57 <widget class="QPushButton" name="m_btnSet">
58 <property name="text">
59 <string>设置</string>
60 </property>
61 </widget>
62 </item>
63 </layout>
64 </item>
65 <item>
66 <widget class="QLineEdit" name="m_editCalendar">
67 <property name="alignment">
68 <set>Qt::AlignCenter</set>
69 </property>
70 <property name="readOnly">
71 <bool>true</bool>
72 </property>
73 </widget>
74 </item>
75 <item>
76 <widget class="QCalendarWidget" name="m_calendar">
77 <property name="gridVisible">
78 <bool>true</bool>
79 </property>
80 </widget>
81 </item>
82 </layout>
83 </widget>
84 <tabstops>
85 <tabstop>m_calendar</tabstop>
86 <tabstop>m_dateEdit</tabstop>
87 <tabstop>m_timeEdit</tabstop>
88 <tabstop>m_dateTimeEdit</tabstop>
89 <tabstop>m_btnGet</tabstop>
90 <tabstop>m_editDate</tabstop>
91 <tabstop>m_editTime</tabstop>
92 <tabstop>m_editDateTime</tabstop>
93 <tabstop>m_btnSet</tabstop>
94 <tabstop>m_editCalendar</tabstop>
95 </tabstops>
96 <resources/>
97 <connections/>
98</ui>
C:\Users\Minwei\Projects\Qt\DateTime\datetimedialog.h:
xxxxxxxxxx
271
2
3
4
5
6QT_BEGIN_NAMESPACE
7namespace Ui { class DateTimeDialog; }
8QT_END_NAMESPACE
9
10class DateTimeDialog : public QDialog
11{
12 Q_OBJECT
13
14public:
15 DateTimeDialog(QWidget *parent = nullptr);
16 ~DateTimeDialog();
17
18private slots:
19 void on_m_btnGet_clicked();
20 void on_m_btnSet_clicked();
21 void on_m_calendar_selectionChanged();
22
23private:
24 Ui::DateTimeDialog *ui;
25};
26
27// DATETIMEDIALOG_H
C:\Users\Minwei\Projects\Qt\DateTime\datetimedialog.cpp:
xxxxxxxxxx
531
2
3
4DateTimeDialog::DateTimeDialog(QWidget *parent)
5 : QDialog(parent)
6 , ui(new Ui::DateTimeDialog)
7{
8 ui->setupUi(this);
9
10 on_m_btnGet_clicked();
11 on_m_calendar_selectionChanged();
12}
13
14DateTimeDialog::~DateTimeDialog()
15{
16 delete ui;
17}
18
19
20void DateTimeDialog::on_m_btnGet_clicked()
21{
22 QDateTime dateTime = QDateTime::currentDateTime();
23
24 ui->m_dateEdit->setDate(dateTime.date());
25 ui->m_timeEdit->setTime(dateTime.time());
26 ui->m_dateTimeEdit->setDateTime(dateTime);
27
28 ui->m_editDate->setText(dateTime.date().toString(
29 ui->m_dateEdit->displayFormat()));
30 ui->m_editTime->setText(dateTime.time().toString(
31 ui->m_timeEdit->displayFormat()));
32 ui->m_editDateTime->setText(dateTime.toString(
33 ui->m_dateTimeEdit->displayFormat()));
34}
35
36void DateTimeDialog::on_m_btnSet_clicked()
37{
38 ui->m_dateEdit->setDate(QDate::fromString(
39 ui->m_editDate->text(),
40 ui->m_dateEdit->displayFormat()));
41 ui->m_timeEdit->setTime(QTime::fromString(
42 ui->m_editTime->text(),
43 ui->m_timeEdit->displayFormat()));
44 ui->m_dateTimeEdit->setDateTime(QDateTime::fromString(
45 ui->m_editDateTime->text(),
46 ui->m_dateTimeEdit->displayFormat()));
47}
48
49void DateTimeDialog::on_m_calendar_selectionChanged()
50{
51 ui->m_editCalendar->setText(ui->m_calendar->selectedDate().toString(
52 ui->m_dateEdit->displayFormat()));
53}
运行效果如图所示: