OSDN Git Service

update the QDateTimeEdit button text on date change
authorIvailo Monev <xakepa10@gmail.com>
Wed, 2 Aug 2023 07:19:36 +0000 (10:19 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Wed, 2 Aug 2023 07:19:36 +0000 (10:19 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/widgets/qdatetimeedit.cpp
src/gui/widgets/qdatetimeedit_p.h

index b2b2f75..b5555bb 100644 (file)
@@ -143,7 +143,7 @@ void QDateTimeEditPrivate::updateWidgets(const QDateTime &datetime)
     if (m_showdate) {
         const QDate curdate = datetime.date();
         calendarwidget->setSelectedDate(curdate);
-        m_datebutton->setText(calendarwidget->locale().toString(curdate));
+        updateButton(curdate);
     }
     if (m_showtime) {
         const QTime curtime = datetime.time();
@@ -164,6 +164,11 @@ void QDateTimeEditPrivate::updateSuffixes()
     m_secondbox->setSuffix(getSecondSuffix(m_secondbox->value()));
 }
 
+void QDateTimeEditPrivate::updateButton(const QDate &date)
+{
+    m_datebutton->setText(calendarwidget->locale().toString(date));
+}
+
 void QDateTimeEditPrivate::setCalendar(QCalendarWidget *calendar)
 {
     Q_Q(QDateTimeEdit);
@@ -192,17 +197,19 @@ QDateTime QDateTimeEditPrivate::currentDateTime() const
 void QDateTimeEditPrivate::_q_dateChanged()
 {
     Q_Q(QDateTimeEdit);
+    Q_ASSERT(m_showdate);
     const QDateTime curdatetime = currentDateTime();
-    if (m_showdate) {
-        m_datemenu->hide();
-    }
+    const QDate curdate = curdatetime.date();
+    m_datemenu->hide();
+    updateButton(curdate);
     emit q->dateTimeChanged(curdatetime);
-    emit q->dateChanged(curdatetime.date());
+    emit q->dateChanged(curdate);
 }
 
 void QDateTimeEditPrivate::_q_timeChanged()
 {
     Q_Q(QDateTimeEdit);
+    Q_ASSERT(m_showtime);
     const QDateTime curdatetime = currentDateTime();
     updateSuffixes();
     emit q->dateTimeChanged(curdatetime);
index 8ff3049..ef0ae6a 100644 (file)
@@ -58,6 +58,7 @@ public:
     void init(const QDateTime &datetime, const bool showdate, const bool showtime);
     void updateWidgets(const QDateTime &datetime);
     void updateSuffixes();
+    void updateButton(const QDate &date);
     void setCalendar(QCalendarWidget *calendar);
     QDateTime currentDateTime() const;