/*! \reimp */ void QDateEditEx::mousePressEvent(QMouseEvent *event) { bool saveNull = d->null; QDateEdit::mousePressEvent(event); if (d->nullable && saveNull && calendarWidget() && calendarWidget()->isVisible()) { setDateTime(QDateTime::currentDateTime()); } }
void QgsDateTimeEdit::mousePressEvent( QMouseEvent *event ) { // catch mouse press on the button (when the current value is null) // in non-calendar mode: modifiy the date so it leads to showing current date (don't bother about time) // in calendar mode: be sure NULL is displayed when needed and show page of current date in calendar widget bool updateCalendar = false; if ( mIsNull ) { QStyle::SubControl control; if ( calendarPopup() ) { QStyleOptionComboBox optCombo; optCombo.init( this ); optCombo.editable = true; optCombo.subControls = QStyle::SC_All; control = style()->hitTestComplexControl( QStyle::CC_ComboBox, &optCombo, event->pos(), this ); if ( control == QStyle::SC_ComboBoxArrow && calendarWidget() ) { mCurrentPressEvent = true; // ensure the line edit still displays NULL updateCalendar = true; displayNull( updateCalendar ); mCurrentPressEvent = false; } } else { QStyleOptionSpinBox opt; this->initStyleOption( &opt ); control = style()->hitTestComplexControl( QStyle::CC_SpinBox, &opt, event->pos(), this ); if ( control == QStyle::SC_SpinBoxDown || control == QStyle::SC_SpinBoxUp ) { mCurrentPressEvent = true; disconnect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); resetBeforeChange( control == QStyle::SC_SpinBoxDown ? -1 : 1 ); connect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); mCurrentPressEvent = false; } } } QDateTimeEdit::mousePressEvent( event ); if ( updateCalendar ) { // set calendar page to current date to avoid going to minimal date page when value is null calendarWidget()->setCurrentPage( QDate::currentDate().year(), QDate::currentDate().month() ); } }
int QAccessibleCalendarWidget::childCount() const { return calendarWidget()->isNavigationBarVisible() ? 2 : 1; }